Rails多个开发人员环境

时间:2011-05-17 09:02:10

标签: ruby-on-rails

在我们公司,人们使用不同的操作系统。我正在使用Linux并且在 development.rb 中排队:

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

Windows上的设计师需要不同的产品线。有没有办法,如何在轨道上管理ruby中的不同开发人员?非常感谢!

2 个答案:

答案 0 :(得分:3)

一个解决方案: 在配置中创建一个名为“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中的行不会覆盖它。

我在我的一个项目中做了类似的事情,使用我拥有的gmail帐户而不是通常的电子邮件发送系统,以开发模式发送电子邮件。

答案 1 :(得分:2)

如果这只是一个平台问题,请尝试以下方法:

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

保持机器特定设置的一种好方法是使用配置文件。 将settings.yml视为database.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]