【问题标题】:Any heroku/rails approach to prevent accident db data destruction?任何防止事故数据库数据破坏的heroku/rails方法?
【发布时间】:2012-10-01 14:33:08
【问题描述】:

我现在有多个生产 Heroku 应用程序,还有几个正在开发中。

对于正在积极开发的应用程序,我经常在我还在进行早期开发时运行诸如 heroku run rake db:setup、rake db:seed 之类的命令来重置数据。

在生产应用程序的 heroku 命令提示符下,我可能会意外运行这些命令,这可能会很糟糕。

简而言之,是否可以为 heroku 应用程序 rails 禁用某些 rake 任务(db:reset、db:setup、db:seed)。

【问题讨论】:

    标签: ruby-on-rails heroku rake


    【解决方案1】:

    将任务依赖添加到适当的“危险”任务:

    task :env_check_development => :environment do
        raise Exception.new("CAN ONLY RUN IN DEVELOPMENT") unless ::Rails.env.development?
    end
    
    task 'db:migrate' => :env_check_development
    

    然后:

    $ RAILS_ENV=test rake db:migrate
    
    rake aborted!
    CAN ONLY RUN IN DEVELOPMENT
    

    【讨论】:

    • 在 rails 3 生成的应用程序中。我猜这会去这样的地方吗? lib/tasks/dependencies.rb ?
    • @koa 我测试的时候直接放在Rakefile中;但我相信你可以把它放在 lib/tasks/*.rake 下,因为它们都是在运行时加载的。
    • 非常聪明的方法。谢谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-06-12
    • 1970-01-01
    • 2013-05-14
    • 1970-01-01
    • 2019-08-27
    • 2015-12-05
    相关资源
    最近更新 更多