Class: Seedbank::Runner
- Inherits:
-
Object
- Object
- Seedbank::Runner
- Defined in:
- lib/seedbank/runner.rb
Instance Method Summary collapse
-
#after(*dependencies, &block) ⇒ Object
Run this seed after the specified dependencies have run If a block is specified the contents of the block are executed after all the dependencies have been executed.
- #evaluate(seed_task, seed_file) ⇒ Object
-
#initialize ⇒ Runner
constructor
A new instance of Runner.
- #let(name, &block) ⇒ Object
- #let!(name, &block) ⇒ Object
Constructor Details
#initialize ⇒ Runner
4 5 6 |
# File 'lib/seedbank/runner.rb', line 4 def initialize @_memoized = {} end |
Instance Method Details
#after(*dependencies, &block) ⇒ Object
Run this seed after the specified dependencies have run If a block is specified the contents of the block are executed after all the dependencies have been executed.
If no block is specified just the dependencies are run. This makes it possible to create shared dependencies. For example
Would look for a db/seeds/shared/users.seeds.rb seed and execute it.
44 45 46 47 48 49 50 51 52 53 54 55 56 |
# File 'lib/seedbank/runner.rb', line 44 def after(*dependencies, &block) dependencies.flatten! dependencies.map! { |dep| "db:seed:#{dep}"} dependent_task_name = @_seed_task.name + ':body' if Rake::Task.task_defined?(dependent_task_name) dependent_task = Rake::Task[dependent_task_name] else dependent_task = Rake::Task.define_task(dependent_task_name => dependencies, &block) end dependent_task.invoke end |
#evaluate(seed_task, seed_file) ⇒ Object
26 27 28 29 |
# File 'lib/seedbank/runner.rb', line 26 def evaluate(seed_task, seed_file) @_seed_task = seed_task instance_eval(File.read(seed_file), seed_file) end |
#let(name, &block) ⇒ Object
8 9 10 11 12 13 14 15 16 17 18 19 |
# File 'lib/seedbank/runner.rb', line 8 def let(name, &block) name = String(name) raise ArgumentError.new("#{name} is already defined") if respond_to?(name, true) __eigenclass.instance_exec(name) do |name| define_method(name) do @_memoized.fetch(name) { |key| @_memoized[key] = instance_eval(&block) } end end end |
#let!(name, &block) ⇒ Object
21 22 23 24 |
# File 'lib/seedbank/runner.rb', line 21 def let!(name, &block) let(name, &block) send name end |