gpt4 book ai didi

ruby-on-rails - Ruby 应用程序的多个环境

转载 作者:数据小太阳 更新时间:2023-10-29 06:47:05 24 4
gpt4 key购买 nike

我编写 Rails 应用程序已经很长时间了,以至于我突然被 Rails 免费获得的东西困住了:环境。

也就是说,您可以在本地运行 Rails 应用程序,默认情况下,RAILS_ENV(或 Rails.env)是“开发”。如果您正在运行您的规范/测试,它是“测试”,当您部署到您的生产服务器时,您将其设置为作为“生产”运行。

这在您有配置文件时特别有用。也可用于 Gemfile 区分特定环境的 gem。

那么现在回答我的问题:我正在编写一个纯 Ruby 应用程序,但我不知道设置它以便我仍然可以拥有多个环境的最佳方法?我想为第 3 方服务(如 MongoLab/Iron.IO/等)设置配置文件,但我希望它们设置为“开发”、“测试”、“生产”等。然后我想成为能够从各种环境运行该应用程序。

我知道我可以通过命令行环境变量手动处理它,但我想知道是否有最好(更好?)的做法?任何有助于此的 gem ?或者关于如何为纯 Ruby 应用构建环境处理的任何建议?

谢谢,

最佳答案

您可以像 Rails 那样做一些事情:

class AppEnvironment

def initialize(env = :production)
@name = env.intern
end

def development?
@name == :development
end

def test?
@name == :test
end

def production?
@name == :production
end
end

app_environment = AppEnvironment.new( ENV['APP_ENVIRONMENT'] )

然后通过 rake 任务设置环境变量。

namespace :myapp do
desc "Run a development server"
task :server => :environment do
ENV['APP_ENVIRONMENT'] ||= "development"
# ...
end

desc "Run a bunch of tests"
task :test => :environment do
ENV['APP_ENVIRONMENT'] ||= "test"
# alternatively do this in `spec_helper.rb`
end

end

已添加。

使用 Bundler 可以很容易地为每个环境使用不同的 gem 集。

您可能会从 rails 中的 config/application.rb 中认出这一行:

Bundler.require(:default, Rails.env) # Rails.env is just a string

这告诉 bundler require all gems in a specific group除了在组外声明的 gem 。

gem 'foo'

group :test do
gem 'rspec'
end

关于ruby-on-rails - Ruby 应用程序的多个环境,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29924613/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com