Skip to content

Instantly share code, notes, and snippets.

View jnicklas's full-sized avatar

Jonas Nicklas jnicklas

View GitHub Profile
module Merb::Generators
class DatamapperModelGenerator < ComponentGenerator
# do stuff here
end
add_private :datamapper_model
ModelGenerator.invoke :datamapper_model, :orm => :datamapper
# actual stuff that matters
def generator_full_paths
@generator_full_paths ||=
Gem::cache.inject({}) do |latest, name_gem|
name, gem = name_gem
hem = latest[gem.name]
latest[gem.name] = gem if hem.nil? or gem.version > hem.version
latest
end.values.inject([]) do |mem, gem|
Gem structure:
/merb-slices
/lib
/spec
...
/merb_generators
/generators.rb # this is what we glob for
/slice_generator # this is required by generators.rb
/thin_slice_generator
scope 'merb-gen' do
# do merb-gen stuff here
end
scope 'monkey' do
# do monkey stuff here
end
scope "merb-gen" do
require File.join(File.dirname(__FILE__, 'lib', 'generators', 'my_generator.rb'))
end
scope "merb-gen" do
require File.join(File.dirname(__FILE__, 'lib', 'generators', 'my_generator.rb'))
end
# If we load in the generator this way it will *always* be loaded
scope "merb-gen" do
Merb.add_generators File.join(File.dirname(__FILE), 'lib', 'generators', 'model')
end