ruby-on-rails - 插件中的生成器和迁移 (rails 3)

标签 ruby-on-rails ruby-on-rails-3 ruby-on-rails-plugins

我只是想创建一个没有任何参数的插件迁移生成器,例如:$railsgenerate yaffle,这应该复制迁移文件(lib/generators/yaffle/template/create_yaffle.rb)到 db/migrate/[时间戳]_create_yaffle.rb。

  1. 我在这里面临的问题是,它的复制,但没有时间戳。
  2. 此外,当我运行 $railsgenerate yaffle 时,它会向我显示一条消息,指出未提供参数,它预计采用以下格式 railsgenerate yaffle NAME [options]。我不想有任何选项/参数,它应该只是 railsgenerate yaffle

我应该做什么?

我跟踪了 acts_as_commentable 中使用的生成器,看起来很简单,但我不知道在哪里修改这些设置...有人可以帮忙吗?

生成器代码:

require 'rails/generators'
require 'rails/generators/migration'

class ThumbitGenerator  Rails::Generators::NamedBase
  source_root File.expand_path('../templates', __FILE__)

  def self.next_migration_number(path)
    Time.now.utc.strftime("%Y%m%d%H%M%S")
  end

  def create_model_file
    template "like.rb", "app/models/like.rb"
    template "liking.rb", "app/models/liking.rb"
    template "create_likes.rb", "db/migrate/create_likes.rb"
    template "create_likings.rb", "db/migrate/create_likings.rb"
  end

end

最佳答案

好的,我找到了答案...

  1. 我在生成器文件中使用了 Rails::Generators::NamedBase 而不是 Rails::Generators::Base!当您使用 NamedBase 时,它​​总是期望传递一个参数(这是初始化程序的名称)

    解释:guides.rubyonrails.org/generators

  2. 我使用的是 template 方法而不是 migration_template,因为迁移文件不会生成任何迁移编号

    解释:Rails::Generators::Migration.migration_template

最后,这成功了!

require 'rails/generators'
require 'rails/generators/migration'

class ThumbitGenerator < Rails::Generators::Base
  include Rails::Generators::Migration
  source_root File.expand_path('../templates', __FILE__)

  def self.next_migration_number(path)
    Time.now.utc.strftime("%Y%m%d%H%M%S")
  end

  def create_model_file
    template "like.rb", "app/models/like.rb"
    template "liking.rb", "app/models/liking.rb"
    migration_template "create_likes.rb", "db/migrate/create_likes.rb"
    migration_template "create_likings.rb", "db/migrate/create_likings.rb"
  end
end

关于ruby-on-rails - 插件中的生成器和迁移 (rails 3),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4141739/

相关文章:

ruby-on-rails - 尝试在 Ubuntu 12.04 下安装 json 时出错

ruby-on-rails - 调试器-linecache 安装错误

ruby-on-rails - 如何格式化小数?

ruby-on-rails - ActiveModel 属性

ruby-on-rails - client_side_validations 不适用于 simple_nested_form

ruby-on-rails - Devise 是否与 ruby​​ on rails 3.1 完全兼容?它似乎可以工作,但缺少几个文件

ruby-on-rails - Rails 3 - 引擎和插件之间的区别

ruby-on-rails - 如何为模型地理编码设置 VCR 全局磁带?

sql - 在 Rails 中,通过加在一起的两列进行查询?

ruby - 将局部变量从 Controller 传递给 View