2013-04-14 79 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