我对Ruby/Rails框架相当陌生。我的Rails应用程序中有一个简单的生成器库/生成器。生成器的功能是将模板/myfile.yml目录中的一个文件复制到config/myfile.yml目录中。现在我想在另一个应用程序中使用这个生成器。所以,我想把这个包装成宝石。我使用bundler生成了gem,它包含以下文件结构:
lib/
mygem/
version.rb
generators/
mygem/
install/
templates/
somefile.yml
install_generator.rb
USAGE
mygem.rb
mygem.gemspec
Gemfile
Gemfile.lock
LICENSE.txt
Rakefile
README.mdinstall_generator的内容如下:
require 'rails/generators'
module Mygem
module Generators
class InstallGenerator < Rails::Generators::Base
source_root File.expand_path('../templates', __FILE__)
def generate_something
copy_file "something.yml", "#{Rails.root}/config/something.yml"
end
end
end
end以下是mygem.gemspec的内容:
# coding: utf-8
lib = File.expand_path('../lib', __FILE__)
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
require 'mygem/version'
Gem::Specification.new do |spec|
spec.name = "mygem"
spec.version = MyGem::VERSION
spec.authors = ["Swaroop SM"]
spec.email = ["myemail@gmail.com"]
spec.description = %q{Something}
spec.summary = %q{Something}
spec.homepage = ""
spec.license = "MIT"
spec.files = `git ls-files`.split($/)
spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
spec.require_paths = ["lib"]
spec.add_development_dependency "bundler", "~> 1.3"
spec.add_development_dependency "rake"
end我想我的lib/mygi.rb中缺少了什么
require "mygem/version"
module Mygem
# Your code goes here...
end我在构建并把它推到rubygems.org上没有问题。
为了在我的rails应用程序中使用它,我将它添加到Gemfile中,并运行bundle安装。现在的问题是,当我运行rails g mygem:install时,它会抛出一个错误,即:
Could not find generator mygem:install.我做错了什么?
发布于 2013-08-31 17:20:01
我解决了这个问题。我忘了将rails作为依赖项添加到我的had文件中。也就是说,我必须在mygem.gemspec:中包括以下内容
spec.add_development_dependency "rails", "~> RAILS_VERSION"https://stackoverflow.com/questions/18537913
复制相似问题