我构建一个gem只是为了完成这些过程,我尝试给它添加一个生成器,当我运行$ rails g
时,生成器显示出来:
Mygem:
mygem:install
但Rails无法识别它
rails g mygem:install
Could not find generator mygem:install.
我将gem指向gemfile中的最新版本
#mygem/lib/rails/generators/mygem_generator.rb
require 'rails/generators'
require 'rails/generators/base'
module Mygem
class InstallGenerator < Rails::Generators::Base
def test
puts 'hi'
end
end
end
。
-mygem
- lib
- generators
- mygem
mygem_generator.rb
- mygem
version.rb
mygem.rb
- pkg
mygem-0.0.1.gem
.gitignore
Gemfile
LICENSE.txt
README.md
Rakefile
mygem.gemspec
。
#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 = ["me"]
spec.email = ["email@email.com"]
spec.summary = %q{lalaala}
spec.description = %q{lalalalal}
spec.homepage = ""
spec.license = "MIT"
spec.files = `git ls-files -z`.split("\x0")
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.5"
spec.add_development_dependency "rake"
end
3条答案
按热度按时间kxe2p93d1#
我们有just made a gem,还有一个生成器,可以调用
rails generate exception_handler:install
,like this:这应该对您有帮助-它对我们有效
hkmswyz62#
在发布我的第一个公共gem后,我遇到了这个问题,这是因为bundler,或者说Rails应用程序没有访问生成器的实际存储库(我相信是这样)。
我一直把
gem 'spree_custom_checkout'
输入
rails g
时没有看到gem的生成器。然后我做了这个:
gem 'spree_custom_checkout', github: '0bserver07/Spree-Custom-Checkout'
然后发电机就出现了!
步骤:
1.我做了'gem构建spree_custom_checkout. gemspec.
1.将其添加到github存储库中,然后推送到存储库中。
1.链接到存储库。
wbrvyc0a3#
我也遇到过类似的问题,因为我在gem名称中使用了大写字母。有一些关于如何命名gem here的很棒的文档,但最相关的是:
不要使用大写字母- OS X和Windows默认情况下有不区分大小写的文件系统。用户可能会错误地要求使用大写字母的gem中的文件,如果他们将其移动到非Windows或OS X系统,这将是不可移植的。虽然这大多是一个新手错误,但我们不需要让他们感到困惑。
我用小写字母重新创建了宝石,问题就消失了。