2012-06-19 46 views
23

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

我也想能够自动化的东西,并echo "query" | rails console是不是一个伟大的方式来做事情。

想法?

编辑:如果我有需要的话,我可以查询到一个长时间运行的过程呢?

+0

我很好奇你的用例是什么,因为它似乎有可能是一个更好的解决方案。 –

+0

我正在使用Geckoboard从正在运行的应用程序获取统计信息,使用JSON提要我正在设置这些查询......我是否完全错误? – tekknolagi

+0

将代码直接构建到应用程序中并通过HTTP获取数据可能更有意义。如果它是敏感信息,则需要某种授权,例如,一个带有请求的API密钥。 –

回答

39

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

  1. Rake任务取决于:环境
  2. 轨道亚军(以前脚本/亚军),例如:

    $轨道亚军“查询”

两者在导轨指南上都有很好的记录:http://guides.rubyonrails.org/command_line.html

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

18

只是管它:

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

它现在应该是因为Spring不是那么当这个问题最初问快了很多。这不是直接的,而是比旋转整个应用程序快得多。使用此为快车道,应该在第二运行(假设你需要的命令是快):

echo 'puts Article.count' | spring rails c 

如果你真的想要一个长期运行的进程,你可以很容易地通过创建一个控制器做只需运行POST的任何操作,然后使用curl在别名后面发送命令。这种行动当然是完全不安全的,应该三重防范在靠近生产的任何地方跑步,但这会很容易设置。

相关问题