我想知道如何将自定义配置变量添加到rails应用程序以及如何在控制器中访问它们,例如我想能够在配置文件中定义upload_directory,例如development.rb并且能够在我的一个中访问它控制器.
其次我计划在我的应用程序中为上传提供S3支持,如果我想添加带有s3访问,密钥的yaml文件,如何在我的Rails应用程序中初始化它以及如何访问我定义的值在该配置文件中.
我目前需要允许管理员可配置的全局设置以及Rails 3应用程序中的每用户可配置设置.
有没有适合这种情况的宝石或最佳实践?
我发现了几个宝石和博客文章,但它们都可以追溯到2006-08,并且不再维护.任何指针都将不胜感激,谢谢.
注意:我已经看到了序列化哈希响应的这个问题,但在我的特定情况下,需要根据用户的设置查询数据库的能力 - 我认为序列化哈希在这种情况下不会很好.
settings configuration rubygems ruby-on-rails ruby-on-rails-3
(请参阅下面的详细配置,这是Henley Chiu回答的结果).
我一直试图将我的大脑包裹在Sidekiq部署,我并没有真正得到它.我在同一台服务器上有一个具有暂存环境和生产环境的应用程序.我所看到的关于sidekiq部署的所有内容基本上都说"只需将sidekiq/capistrano添加到您的部署文件中",所以我就这样做了.然后说明是"这里是带有选项的yml文件",但似乎没有解释.我需要命名空间吗?我在初始化文件中看到,但这似乎是指向服务器外部.
我之前部署过,每个阶段似乎都在适当的环境下启动sidekiq,但它们都从相同的队列进行处理.我的生产电子邮件试图由舞台sidekiq处理,并失败.我暂时停止了我的舞台,但最终我还需要再次使用它.我希望自己不会密集,我真的试图理解这一点,而且我很难找到一个明确的"这就是它的完成方式".
对于它的价值,这里是config/sidekiq.yml(在部署期间加载正常):
:concurrency: 5
:verbose: false
:pidfile: ./tmp/pids/sidekiq.pid
:logfile: ./log/sidekiq.log
:queues:
- [carrierwave, 7]
- [client_emails, 5]
- [default, 3]
staging:
:concurrency: 10
production:
:concurrency: 25
Run Code Online (Sandbox Code Playgroud)
日志文件和pids似乎在正确的位置,但队列只是合并.任何帮助都会很棒!
此外,如果重要:
Rails 3.2.11, passenger, nginx, rvm, Ubuntu 12.10, and Ruby 1.9.3
Run Code Online (Sandbox Code Playgroud)
首先,我在端口7777(或者除了默认的6379之外的任何端口)设置了一个新的redis服务器.几乎遵循我第一次使用的redis快速入门指南.
然后我制作了initilizer文件; 这有客户端和服务器配置.两者都需要使sidekiq工作多级.
请注意,我使用外部YAML文件进行设置.我正在使用SettingsLogic来简化操作,但您可以通过包含文件轻松地自己完成此操作.通过使用yaml文件,我们不必触摸我们的环境/登台或生产文件.
# config/initializers/sidekiq.rb
server = Settings.redis.server
port = Settings.redis.port
db_num = Settings.redis.db_num
namespace = Settings.redis.namespace
Sidekiq.configure_server do |config|
config.redis = { url: "redis://#{server}:#{port}/#{db_num}", namespace: namespace }
end …Run Code Online (Sandbox Code Playgroud) 我们刚刚将虚拟机升级到我认为相同的ruby配置(通过RVM ...... Ruby 1.9.2,Rails 3.0.7,DataMapper 1.1.0).最大的区别是我们从MySQL 5.0到5.1.
出于某种原因,在我们的旧虚拟机上工作的完全相同的代码/ database.yml现在在我们尝试连接到数据库时的新代码上失败了.
问题是这个YAML:
mysql_defaults: &mysql_defaults
adapter: mysql
encoding: UTF-8
username: user
password: pass
host: localhost
development:
<<: *mysql_defaults
database: devdb
production:
<<: *mysql_defaults
database: productiondb
host: master.db.site.com
Run Code Online (Sandbox Code Playgroud)
只是扩展到:
"mysql_defaults" => {
"adapter"=>"mysql",
"encoding"=>"UTF-8",
"username"=>"user",
"password"=>"pass",
"host"=>"localhost"
},
"development" => {
"adapter"=>"mysql",
"encoding"=>"UTF-8",
"username"=>"user",
"password"=>"pass",
"host"=>"localhost"
},
"production" => {
"adapter"=>"mysql",
"encoding"=>"UTF-8",
"username"=>"user",
"password"=>"pass",
"host"=>"localhost"
}
Run Code Online (Sandbox Code Playgroud)
代替:
"mysql_defaults" => {
"adapter"=>"mysql",
"encoding"=>"UTF-8",
"username"=>"user",
"password"=>"pass",
"host"=>"localhost"
},
"development" => {
"adapter"=>"mysql",
"encoding"=>"UTF-8",
"username"=>"user",
"password"=>"pass",
"host"=>"localhost", …Run Code Online (Sandbox Code Playgroud) 我在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)
我不知道如何获得我设置的配置值.
谢谢你的帮助.
我有一个使用OAuth连接到Facebook的Rails应用程序.我正在寻找的是如何处理OAuth密钥的完整描述以及我从facebook获得的秘密.
我已经看到了这个问题的一些变体,但从未有过完整而详细的答案.
我真的在寻找整体流程,但也需要所有可能看起来微不足道的小细节,但对于理解这一点非常重要.
我正在开发一个Ruby on Rails网站,我有一个"架构"问题:我的应用程序需要一些参数,我想知道在哪里存储它们.
具体而言,我的应用程序会收到一些评估然后发送的请求.因此,请求模型必须具有与这些处理相关的属性:验证状态和发送状态.例如,验证状态可以是" 接受 "," 拒绝 "或" 等待 ".发送状态可以是" 发送 "," 等待 "," 发送期间出错 "或类似的东西.我必须在某处存储这些状态代码参数,但我不知道什么是最佳解决方案.
我可以为每个模型创建一个模型并将它们存储在数据库中(例如,有一个活动的记录模型ValidationStatus)但是:创建一个数据库/模型来存储这样的数据不是一件容易的事吗?
我也可以在代码中使用它们而不"存储"它们,我可以将它们存储在YAML文件中......
那么,一个更简单的问题是:如何处理RoR中的应用程序参数?
ruby ×2
architecture ×1
capistrano ×1
database ×1
datamapper ×1
deployment ×1
oauth ×1
rubygems ×1
security ×1
settings ×1
sidekiq ×1
yaml ×1