我需要为我的Rails应用程序创建一个配置选项.对于所有环境都可以是相同的.我发现,如果我把它设置好environment.rb,它可以在我的视图中使用,这正是我想要的......
environment.rb
AUDIOCAST_URI_FORMAT = http://blablalba/blabbitybla/yadda
Run Code Online (Sandbox Code Playgroud)
效果很好.
但是,我有点不安.这是一个很好的方法吗?有没有更时尚的方式?
我正在尝试创建一个rails应用程序,它在环境是开发环境时为变量分配一个值,在环境是生产环境时为该变量分配另一个值.我想在我的代码中指定两个值(硬连线),并让rails知道根据运行的环境分配给变量的值.我该怎么做呢?
如果它很重要,我稍后访问该变量并在模型的类方法中返回其值.
为rails应用程序创建自定义配置部分的最佳方法是什么?理想情况下,我希望最终结果是api调用,如:
Rails.configuration.foo.bar
Rails.configuration.foo.baz
Run Code Online (Sandbox Code Playgroud)
例如
Rails.configuration.stackoverflow.api_key
Rails.configuration.stackoverflow.api_secret
Run Code Online (Sandbox Code Playgroud)
我会将stackoverflow配置存储在某个.rb文件(config/initializers?)中,我显然会有其他类似命名空间的内容 Rails.configuration
我在development.rb中有一些电子邮件设置,我想在我的控制器中访问它.
设置development.rb是:
config.notify_submited_transaction = 'anil@swiftsetup.com,anildbest83@gmail.com'
config.notify_approved_transaction = 'anil@swiftsetup.com'
Run Code Online (Sandbox Code Playgroud)
在我的控制器/动作中,我正在尝试这个:
@to = Rails.env.notify_submited_transaction
@subject = 'AM - Vendor Submitted Transaction'
AmMailer.vendor_submited_transaction(@to, @subject, current_user).deliver
Run Code Online (Sandbox Code Playgroud)
这虽然导致错误:
undefined method `notify_submited_transaction'
Run Code Online (Sandbox Code Playgroud)
我不知道如何获得我设置的配置值.
谢谢你的帮助.
我在rails应用程序中定义了自定义配置变量(APP_CONFIG哈希).好的,现在我如何在模型中使用这些变量?在模型中直接调用APP_CONFIG ['variable']是一种非导轨方式!例如,我可以在没有Rails环境的情况下使用这些模型.然后没有定义APP_CONFIG.
ATM我使用模型观察器并使用实例变量分配全局配置变量,如下所示:
def after_initialize model
Mongoid.observers.disable :all do
model.user_id = APP_CONFIG['user_id'])
model.variable = User.find(model.user_id).variable
end
end
Run Code Online (Sandbox Code Playgroud)
但这个解决方案看起来像一个猴子补丁.还有更好的方法吗?
或者我应该保持最简单,只需在新应用程序(而不是Rails应用程序)中定义APP_CONFIG哈希?
我正在开发一个Ruby on Rails网站,我有一个"架构"问题:我的应用程序需要一些参数,我想知道在哪里存储它们.
具体而言,我的应用程序会收到一些评估然后发送的请求.因此,请求模型必须具有与这些处理相关的属性:验证状态和发送状态.例如,验证状态可以是" 接受 "," 拒绝 "或" 等待 ".发送状态可以是" 发送 "," 等待 "," 发送期间出错 "或类似的东西.我必须在某处存储这些状态代码参数,但我不知道什么是最佳解决方案.
我可以为每个模型创建一个模型并将它们存储在数据库中(例如,有一个活动的记录模型ValidationStatus)但是:创建一个数据库/模型来存储这样的数据不是一件容易的事吗?
我也可以在代码中使用它们而不"存储"它们,我可以将它们存储在YAML文件中......
那么,一个更简单的问题是:如何处理RoR中的应用程序参数?
我正在做一些涉及Stripe API的开发.在我的开发环境中,我正在使用条带测试密钥.在生产中我使用真正的api密钥,以便我可以处理真正的事务.
我目前只是在部署到生产环境之前立即更换测试api密钥; 这感觉不太好.我非常肯定可以使用的策略是使用gitignore创建一个开发分支(忽略我加载api密钥的初始化程序),然后在部署之前将其与master分支合并; 这样,api密钥在各自的环境中始终是正确的.我不是很喜欢这种方法.是否有某种方法在某处配置这些api密钥,以便应用程序只知道在dev/prod中使用哪一个?
我正在尝试设置fb应用程序ID(由omniauth使用),以便其全局设计初始化程序和控制器.
更多信息
我需要它在设计初始化(config/initializer/devise.rb),以便我可以设置config.omniauth:facebook,fb_app_id,fb_app_secret
试图解决方案
我尝试将此信息添加到yml文件(http://railscasts.com/episodes/85-yaml-configuration-file)中,但是,看起来像是为控制器设置了yml哈希,但我无法将其用于设计初始化.
/home/ubuntu/myapp/config/initializers/devise.rb:215:in `block in <top (required)>': uninitialized constant APP_CONFIG (NameError)
Run Code Online (Sandbox Code Playgroud)
有任何想法吗?