Rails如何在gem中创建初始化程序

时间:2013-04-14 21:12:30

标签: ruby-on-rails-3 gem initializer

我正在尝试在Rails 3中构建一个gem并且在其中我试图传递一个初始化器:

Credentials.configure do |config|
  file = File.read("#{Rails.root}/config/twitter.yaml")
  file_config = YAML.load(file)

  config.consumer_key = file_config[Rails.env][:consumer_key]
  config.consumer_secret = file_config[Rails.env][:consumer_secret]
  config.callback_url = URI.escape(file_config[Rails.env][:callback_url])
  config.time_stamp = Time.now.to_i
end

然后我试着这样称呼它:

Credentials.time_stamp

但是我收到了这个错误:

uninitialized constant Twitter::Credentials

问题是什么?

由于

1 个答案:

答案 0 :(得分:7)

你的gem首先需要在lib / generators / your_gem_name_generator.rb中定义一个生成器

mkdir -p lib/generators/

使用名称twitter_credentials.rb

复制该文件夹中的初始值设定项

然后在该文件夹中创建另一个文件,其名称为twitter_generator.rb,内容如下:

class YourGemNameRailtie < Rails::Generators::Base
  source_root(File.expand_path(File.dirname(__FILE__))
  def copy_initializer
    copy_file 'twitter_credentials.rb', 'config/initializers/twitter_credentials.rb'
  end
end

您应该在此处查看有关创建生成器的官方文档: http://guides.rubyonrails.org/generators.html