49

对于我的大型应用程序,Rails 控制台需要一段时间才能加载。有没有办法更容易地单个命令?

我还希望能够使事情自动化,但这echo "query" | rails console不是做事的好方法。

想法?

编辑:我可以在需要时对查询进行 ping 查询的长时间运行的过程怎么样?

4

2 回答 2

80

在控制台之外运行命令有两种主要方式:

  1. 依赖于 :environment 的 Rake 任务

  2. rails runner(以前是 script/runner),例如:

    $ rails runner "query"
    

两者都在 Rails 指南中有很好的记录:https ://guides.rubyonrails.org/command_line.html#bin-rails-runner

顺便说一句:这两种方法仍然需要与控制台相同的时间来启动,但它们对于非交互式任务很有用。

于 2012-06-20T00:07:36.450 回答
44

只需通过管道输入:

echo 'puts Article.count' | bundle exec rails c

由于Spring,它现在应该比最初提出问题时快得多。这不是立即的,但仍然比启动整个应用程序快得多。将此用于快速通道,它应该在一秒钟内运行(假设您所需的命令很快):

echo 'puts Article.count' | spring rails c

如果你真的想要一个长时间运行的进程,你可以通过创建一个简单地运行你发布给它的任何内容的控制器操作来轻松地做到这一点,然后使用别名后面的 curl 向它发送命令。这个动作当然是完全不安全的,应该三重防范在生产附近的任何地方运行,但它很容易设置。

于 2014-08-04T21:54:40.650 回答