2011-05-17 3 views
1

Dans notre société, les gens utilisent différents systèmes d'exploitation. J'utilise Linux et ai ligne development.rb comme:Rails plusieurs environnements de développeurs

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

Designer, qui est sous Windows besoin d'autre ligne. Yat-il un moyen, comment gérer différents développeurs en ruby ​​sur rails? Merci beaucoup!

+0

condition doit être basée sur PC ou développeur environnement? – Bohdan

Répondre

2

Si c'est juste une question de plate-forme, essayer quelque chose comme ceci:

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

Une bonne façon de conserver les paramètres spécifiques à la machine est un fichier de configuration. Traitez le fichier settings.yml comme database.yml et copiez l'exemple sur settings.yml sur la machine de chaque utilisateur.

# .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 

De cette façon, vous pouvez définir ci-dessus comme ceci:

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

Une solution: Créez un dossier dans la configuration "personal", et insérez un fichier dont le contenu est ignoré dans le système de contrôle de source que vous utilisez. Ensuite, chaque développeur peut définir ses propres options qui remplacent ce qui précède. Pour vous assurer que peu importe quelle ligne obtient d'abord évaluée, vous le configurer comme:

#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 

Maintenant, si overrides se dirige d'abord, la ligne development.rb ne sera pas la remplacer.

Je fais quelque chose de similaire dans un de mes projets pour envoyer des emails en mode dev en utilisant un compte gmail que je possède à la place du système habituel d'envoi de mails.

Questions connexes