相关疑难解决方法(0)

如何在rails中定义自定义配置变量

我想知道如何将自定义配置变量添加到rails应用程序以及如何在控制器中访问它们,例如我想能够在配置文件中定义upload_directory,例如development.rb并且能够在我的一个中访问它控制器.

其次我计划在我的应用程序中为上传提供S3支持,如果我想添加带有s3访问,密钥的yaml文件,如何在我的Rails应用程序中初始化它以及如何访问我定义的值在该配置文件中.

configuration ruby-on-rails

332
推荐指数
9
解决办法
16万
查看次数

Rails 3应用程序/用户设置最佳实践?

我目前需要允许管理员可配置的全局设置以及Rails 3应用程序中的每用户可配置设置.

有没有适合这种情况的宝石或最佳实践?

我发现了几个宝石和博客文章,但它们都可以追溯到2006-08,并且不再维护.任何指针都将不胜感激,谢谢.

注意:我已经看到了序列化哈希响应的这个问题,但在我的特定情况下,需要根据用户的设置查询数据库的能力 - 我认为序列化哈希在这种情况下不会很好.

settings configuration rubygems ruby-on-rails ruby-on-rails-3

19
推荐指数
1
解决办法
1万
查看次数

Sidekiq部署到多个环境

(请参阅下面的详细配置,这是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)

deployment capistrano ruby-on-rails sidekiq

11
推荐指数
2
解决办法
1万
查看次数

database.yml和引用无效

我们刚刚将虚拟机升级到我认为相同的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)

ruby yaml ruby-on-rails datamapper

8
推荐指数
1
解决办法
5087
查看次数

获取rails控制器中的环境设置

我在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)

我不知道如何获得我设置的配置值.

谢谢你的帮助.

ruby-on-rails

7
推荐指数
2
解决办法
1万
查看次数

在Rails中处理Oauth Consumer Key和Secret的正确方法是什么?

我有一个使用OAuth连接到Facebook的Rails应用程序.我正在寻找的是如何处理OAuth密钥的完整描述以及我从facebook获得的秘密.

  1. 在哪里存放?
  2. 如何将它们存放在那里?我看到一个答案说它应该是一个env变量,但我正在寻找细节:如何将它们添加到env?手动?脚本?什么剧本?应该在哪里?源控制怎么样?生产怎么样?
  3. 为了在开发,测试和生产中实现解决方案,我应该知道的任何其他细节.

我已经看到了这个问题的一些变体,但从未有过完整而详细的答案.

我真的在寻找整体流程,但也需要所有可能看起来微不足道的小细节,但对于理解这一点非常重要.

ruby security ruby-on-rails oauth ruby-on-rails-3

4
推荐指数
1
解决办法
923
查看次数

存储应用程序参数的最佳位置在哪里:数据库,文件,代码......?

我正在开发一个Ruby on Rails网站,我有一个"架构"问题:我的应用程序需要一些参数,我想知道在哪里存储它们.

具体而言,我的应用程序会收到一些评估然后发送的请求.因此,请求模型必须具有与这些处理相关的属性:验证状态发送状态.例如,验证状态可以是" 接受 "," 拒绝 "或" 等待 ".发送状态可以是" 发送 "," 等待 "," 发送期间出错 "或类似的东西.我必须在某处存储这些状态代码参数,但我不知道什么是最佳解决方案.

我可以为每个模型创建一个模型并将它们存储在数据库中(例如,有一个活动的记录模型ValidationStatus)但是:创建一个数据库/模型来存储这样的数据不是一件容易的事吗?

我也可以在代码中使用它们而不"存储"它们,我可以将它们存储在YAML文件中......

那么,一个更简单的问题是:如何处理RoR中的应用程序参数?

database architecture ruby-on-rails

3
推荐指数
1
解决办法
7543
查看次数