ruby-on-rails Rails 4,带有生成器的自定义gem“找不到生成器”

sdnqo3pr  于 2023-03-09  发布在  Ruby
关注(0)|答案(3)|浏览(360)

我构建一个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
kxe2p93d

kxe2p93d1#

我们有just made a gem,还有一个生成器,可以调用rails generate exception_handler:installlike this

#lib/generators/my_gem/install_generator.rb
module MyGem
    class InstallGenerator < Rails::Generators::Base
         def test
             puts "hi"
         end
     end
end

这应该对您有帮助-它对我们有效

hkmswyz6

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.链接到存储库。

wbrvyc0a

wbrvyc0a3#

我也遇到过类似的问题,因为我在gem名称中使用了大写字母。有一些关于如何命名gem here的很棒的文档,但最相关的是:

不要使用大写字母- OS X和Windows默认情况下有不区分大小写的文件系统。用户可能会错误地要求使用大写字母的gem中的文件,如果他们将其移动到非Windows或OS X系统,这将是不可移植的。虽然这大多是一个新手错误,但我们不需要让他们感到困惑。

我用小写字母重新创建了宝石,问题就消失了。

相关问题