首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >将Rails生成器作为Ruby Gem分发

将Rails生成器作为Ruby Gem分发
EN

Stack Overflow用户
提问于 2013-08-30 16:51:25
回答 1查看 882关注 0票数 2

我对Ruby/Rails框架相当陌生。我的Rails应用程序中有一个简单的生成器库/生成器。生成器的功能是将模板/myfile.yml目录中的一个文件复制到config/myfile.yml目录中。现在我想在另一个应用程序中使用这个生成器。所以,我想把这个包装成宝石。我使用bundler生成了gem,它包含以下文件结构:

代码语言:javascript
运行
复制
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.md

install_generator的内容如下:

代码语言:javascript
运行
复制
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的内容:

代码语言:javascript
运行
复制
# 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中缺少了什么

代码语言:javascript
运行
复制
require "mygem/version"

module Mygem
  # Your code goes here...
end

我在构建并把它推到rubygems.org上没有问题。

为了在我的rails应用程序中使用它,我将它添加到Gemfile中,并运行bundle安装。现在的问题是,当我运行rails g mygem:install时,它会抛出一个错误,即:

代码语言:javascript
运行
复制
Could not find generator mygem:install.

我做错了什么?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-08-31 17:20:01

我解决了这个问题。我忘了将rails作为依赖项添加到我的had文件中。也就是说,我必须在mygem.gemspec:中包括以下内容

代码语言:javascript
运行
复制
spec.add_development_dependency "rails", "~> RAILS_VERSION"
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18537913

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档