这是我当前的控制器:'trace_controller.rb'
rule_oms = Rule.new("localhost","root","","oms_local")
rule_warehouse=Rule.new("localhost","root","","warehouse_local")
rule_payment=Rule.new("localhost","root","","payment_local")
... .... 我们有两种不同的模式 - 分期和生产。它们具有唯一的主机名,密码,用户,数据库名称。
如何从environment.rb更改这些设置?你能根据它们设置变量吗?
根据环境,我获取所有不同数据库的主机名,pwd,user,db_name。与大多数Rails应用程序不同,无论环境如何,我都会连接到多个数据库。
我应该做些什么? (使用最新版本的Rails)。
答案 0 :(得分:1)
- >环境 - >添加具有您的环境名称的另一个文件
默认情况下,存在development.rb,test.rb和production.rb。 为你的qa_1环境添加让我们说qa_1.rb。
在此文件中设置所需的配置,您可以从任何现有环境文件中复制它,并根据需要进行更改。
使用RAILS_ENV = qa_1
运行您的rails应用它将从qa_1.rb文件中获取配置
你可以设置settings_logic gem,设置envirornment明智的值
gem'settingslogic'
然后在app / models / settings.rb中添加
class Settings < Settingslogic
source "#{Rails.root}/config/application.yml"
namespace Rails.env
end
和/config/application.yml 为您设置环境特定数据
defaults: &defaults
db: default_db
development:
user: dev_user
test:
user: test_user
production:
user: prod_user
db: prod_db
qa_1:
user: qa_1_user
db: qa_1_db
在database.yml中也可以使用
qa_1:
db: qa_db
user: user
答案 1 :(得分:0)
我不确定你想要实现什么,但是如果你把它放在environment.rb
中,那么我只能猜测你想要某种全局常数。如果这是您想要的,我建议您在config/initializers
内创建一个名为constants.rb
的文件,然后将其放在那里。
RULE_OMS = Rule.new("oms-#{Rails.env}")
RULE_WAREHOUSE = Rule.new("warehouse_#{Rails.env}")
RULE_PAYMENT = Rule.new("payment_#{Rails.env}")
然后只需在您的应用中的任意位置拨打RULE_OMS
。
答案 2 :(得分:0)
这对我有用 - :
1)在config / environments中创建local.rb(只是开发的副本)
2)在database.yml
中定义local的参数3)在config / environment.rb中设置参数
if Rails.env.local?
OMS_HOST="localhost"
OMS_DB="oms_local"
OMS_USER="root"
OMS_PWD=""
WAREHOUSE_HOST="localhost"
WAREHOUSE_DB="warehouse_local"
WAREHOUSE_USER="root"
WAREHOUSE_PWD=""
PAYMENT_HOST="localhost"
PAYMENT_DB="payment_local"
PAYMENT_USER="root"
PAYMENT_PWD=""
end
if Rails.env.development?
OMS_HOST="amt.com"
OMS_DB="oms_staging"
OMS_USER="user1"
OMS_PWD="xyz"
....
.....
4)在trace_controller.rb中,我使用这些常量来初始化我的规则模型。
5)如果您正在使用它,请在.gitignore文件中添加。
6)不要忘记重启服务器。
为我的问题构思方式道歉,因为它很不清楚。希望这个答案将来会对某人有所帮助。