ruby-on-rails - 在 Heroku 的 paper_trail 中自动设置谁负责控制台的更改

标签 ruby-on-rails ruby-on-rails-4 heroku ruby-on-rails-4.2 paper-trail-gem

paper_trail对我们很有用。但是当我们使用 heroku run console 登录到 Heroku 的控制台然后我们进行更改时,更改的发起者未设置:(。所以 paper_trail 有一个机制:

In a console session you can manually set who is responsible like this:

>> PaperTrail.whodunnit = 'Andy Stewart'
>> widget.update_attributes :name => 'Wibble'
>> widget.versions.last.whodunnit              # Andy Stewart

You can avoid having to do this manually by setting your initializer to pick up the username of the current user from the OS, like this:
<bunch of code>

我的问题是我们如何使用 Heroku 将其自动化?我可以做这样的事情吗?

heroku run console -e "PaperTrail.whodunnit = '123:console'"

然后我们每个人都可以使用我们各自的用户 ID 简单地创建一个 console.sh 文件。或者是否有另一种机制可以自动执行此操作?

最佳答案

You can avoid having to do this manually by setting your initializer to pick up the username of the current user from the OS

这就是答案。将 PaperTrail.whodunnit 代码放在 config/initializers 的初始化程序中。这些在您启动控制台时运行。那将是最好的地方,因为它会在任何开发人员登录到 heroku 控制台时生效,而无需更改他们为此运行的命令:

# config/initializers/default_whodunnit.rb
if defined?(Rails::Console)
  PaperTrail.whodunnit = "whatever"
end

更新:

Heroku 是一个 git 服务器,就像 Github 一样,但是您推送到 heroku 以启动部署。 MrYoshiji's answer提供一个选项,让您的开发人员有机会声明他们的用户名并将其设置为 whodunnit。只需让他的答案的代码示例您的 default_whodunnit.rb 初始值设定项的内容。通过这种方式,您将 checkin whodunnit 文件,推送到 Heroku,现在只要开发人员登录到 heroku 控制台,他们就会被要求输入用户名,这将设置 whodunnit

关于ruby-on-rails - 在 Heroku 的 paper_trail 中自动设置谁负责控制台的更改,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29478657/

相关文章:

ruby-on-rails - 检测 rails has_many :through relationship 中的变化

ruby-on-rails - 在 Rails 中覆盖 MIME 类型

ruby-on-rails - Ruby 修复多个编码文档

ruby-on-rails-4 - 在美国午夜在 rails 中安排 `whenever` 任务的最佳方法是什么?

database - 在 Git 中处理数据库的正确方法是什么?

css - Rails 4.0 btn-btn-danger 按钮问题

ruby-on-rails - ActionController::RoutingError(没有路由匹配 [POST] "/venues/2/heart/2"):

javascript - 在 Rails 中创建/编辑帖子时生成帖子的实时预览

ruby-on-rails - Rails 4 和 RSpec 3 : Testing models and allow_blank

django - celery multi 在 heroku 上崩溃