2011-05-17 125 views
1

在我們公司,人們使用不同的操作系統。我使用Linux和擁有線development.rb,如:Rails多個開發人員環境

Paperclip.options[:command_path] = "/usr/bin"

設計師,誰是在Windows上需要不同的線路。有沒有什麼辦法,如何管理紅寶石軌道上的不同開發人員?非常感謝!

+0

條件,應根據開發者的PC或環境嗎? – Bohdan 2011-05-17 12:36:44

回答

2

如果它只是一個平臺的問題,嘗試這樣的事情:

if RUBY_PLATFORM =~ /mswin/ 
    Paperclip.options[:command_path] = 'c://ruby/bin' 
else 
    Paperclip.options[:command_path] = '/usr/bin' 
end 

一個很好的方法來保持特定機器的設置是一個配置文件。 對待像database.yml這樣的settings.yml,並將示例複製到每個用戶機器上的settings.yml中。

# .gitignore 
config/settings.yml 

# config/settings.yml.example 
paperclip_command_path: /usr/bin 
some_api_key: put_key_here 

# config/initializers/load_settings.rb 
filename = File.join(File.dirname(__FILE__), '..', 'settings.yml') 
if File.file?(filename) 
    APP_CONFIG = YAML::load_file(filename) 
    APP_CONFIG.each do |k, v| 
    v.symbolize_keys! if v.respond_to?(:symbolize_keys!) 
    end 
end 

這種方式,你可以設置上述這樣的:

Paperclip.options[:command_path] = APP_CONFIG[:paperclip_command_path] 
3

一個解決方案: 在config中創建一個名爲「personal」的文件夾,並在其中放置一個文件,其中的內容在您使用的任何源代碼管理系統中被設置爲忽略。然後在其中,每個開發人員可以設置自己的選項來覆蓋上述內容。爲了確保它不會哪一行首先得到評估,您可以將它像:

#in config/development.rb 
Paperclip.options[:command_path] ||= "/usr/bin" 

#in config/personal/overrides.rb 
if RAILS_ENV == "development" 
    Paperclip.options[:command_path] = "/my/local/path" 
end 

現在,如果重寫先運行,在development.rb行不會將其覆蓋。

我在我的一個項目中做了類似的事情,用dev模式發送電子郵件,使用我自己的gmail賬戶而不是通常的電子郵件發送系統。

相關問題