2013-04-14 29 views
4

我想用Rails 3里面建一个宝石就我试图传递一个初始化:的Rails如何创建一个宝石内的初始化

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 

是什么问题?

感谢

回答

6

您的创业板将首先需要在lib中定义一个发电机/发电机/ 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

+0

但是,有没有办法让宝石本身内部的动态配置文件? – Wahtever

+0

@Wahtever只是'需要'它?重新阅读这个问题,看来你的问题是没有证书类。你是否已经实现了一个Credentials类,该类有一个接受一个块来保持状态的配置类方法? – Unixmonkey

+0

生成器文件中有错误,谢谢。 – Wahtever