繁体   English   中英

将Rails App环境公开到Ruby脚本

[英]Expose Rails App Environment to Ruby Script

出于纯粹的好奇心,我想知道是否有可能(毫无疑问)“涉足” Rails应用程序的环境。 例如,假设我想创建一个cron脚本(我不希望这样做),以对Rails应用程序进行某种维护,并且我想用Ruby编写它,并使用我已经拥有的所有不错的代码,例如, User.find等。

这可能吗?如果可以,怎么办?

我只是好奇,因为我觉得我最终出于某种原因会想要这样做。

我现在正在使用Ruby 1.9.1的Rails 3,以防万一。

您可以按照Arsen7的建议使用脚本/ rails运行程序,也可以编写自己的脚本以在开始时加载应用程序环境:

require 'config/environment'

实际上就是您需要的一切。

要使您的脚本在cron作业中工作,请确保该脚本是可执行文件( chmod u + x ),并以正确的shebang行开头( #!/ usr / bin / env ruby或任何适合您的情况)。

这当然是可能的。 这是有关如何执行此操作的很好的文章: 如何从cron运行rake任务

看一下Rails :: Railtie类 如果您在启动应用程序时需要运行代码,这是一种方法。 这是一个非常简单的示例。

从Rails的开始就有../script/runner,它专门针对此类问题而设计。

在Rails 3中,您将其称为: ./script/rails runner "puts User.find(:all).map(&:inspect)"

尝试./script/runner --help./script/rails runner --help

作为运行程序的参数,您提供文件名或仅提供代码。

它通常比准备Rake任务有用,因为您只能执行一次操作:

ssh prod@example.com "cd rails/app && ./script/runner -e production 'puts User.count'"

是的,只需要这些文件在脚本文件的顶部

require  'config/boot.rb' 
require 'config/application.rb'
Rails.application.require_environment!

现在您可以访问模型了

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM