Module: Smoke

Included in:
Object
Defined in:
lib/smoke.rb,
lib/smoke/cache.rb,
lib/smoke/origin.rb,
lib/smoke/request.rb,
lib/smoke/source/yql.rb,
lib/smoke/source/data.rb,
lib/smoke/source/feed.rb,
lib/smoke/source/join.rb

Defined Under Namespace

Modules: Source Classes: Cache, Origin, Request

Constant Summary collapse

@@active_sources =
{}
@@config =
{
  :enable_logging => true,
  :user_agent     => "Ruby/#{RUBY_VERSION}/Smoke",
  :cache          => {
    :enabled  => false,
    :store    => :memory,
    :options  => {},
    :expiry   => 1800
  }
}

Class Method Summary collapse

Class Method Details

.[](source) ⇒ Object

Access registered smoke source instances

Define your source:

Smoke.yql(:ruby) do ....

Then access it:

Smoke[:ruby]
=> #<Smoke::Source::YQL::0x18428d4...


30
31
32
# File 'lib/smoke.rb', line 30

def [](source)
  active_sources[source]
end

.activate(name, source) ⇒ Object

Activates new instances of sources Source instances are stored within the @@active_sources class variable for later use



37
38
39
40
41
42
# File 'lib/smoke.rb', line 37

def activate(name, source)
  if active_sources.has_key?(name)
    Smoke.log.warn "Smoke source activation: Source with idential name already initialized" 
  end
  active_sources.update({ name => source })
end

.active_sourcesObject

Returns all activated smoke sources



45
46
47
# File 'lib/smoke.rb', line 45

def active_sources
  @@active_sources
end

.configObject

Access configuration options

Smoke.config[:option_name]
=> true


82
83
84
# File 'lib/smoke.rb', line 82

def config
  @@config 
end

.configure {|@@config| ... } ⇒ Object

Set any configurable options

Smoke.configure do |c|
  c[:user_agent] = "Some other site"
end

Yields:



74
75
76
# File 'lib/smoke.rb', line 74

def configure(&block)
  yield @@config
end

.data(name, &block) ⇒ Object



87
# File 'lib/smoke.rb', line 87

def data(name, &block); Smoke::Source::Data.new(name, &block); end

.feed(name, &block) ⇒ Object



88
# File 'lib/smoke.rb', line 88

def feed(name, &block); Smoke::Source::Feed.new(name, &block); end

.join(*names, &block) ⇒ Object

Join multiple sources together into a single feed Usage:

Smoke.join(:delicious, :twitter, :flickr) do
  name :stream
  path :photos, :photo
end


96
# File 'lib/smoke.rb', line 96

def join(*names, &block); Smoke::Source::Join.new(names, &block); end

.logObject

Log for info, debug, error and warn with:

Smoke.log.info "message"
Smoke.log.debug "message"
Smoke.log.error "message"
Smoke.log.warn "message"


64
65
66
# File 'lib/smoke.rb', line 64

def log
  @@log ||= Logger.new(config[:enable_logging] ? $stdout : "/dev/null")
end

.rename(candidates) ⇒ Object

Rename a source



50
51
52
53
54
55
56
# File 'lib/smoke.rb', line 50

def rename(candidates)
  candidates.each do |o, n| 
    active_sources[o].name = n.to_s
    active_sources.rename(o => n)
    return active_sources[n]
  end
end

.yql(name, &block) ⇒ Object



86
# File 'lib/smoke.rb', line 86

def yql(name, &block); Smoke::Source::YQL.new(name, &block); end