2011-05-25 149 views
3

这可能是一个愚蠢的问题,但我只是想知道在哪里,或者它是否有可能运行一个ruby脚本,这与我希望它运行的rails应用程序无关。澄清,我正在开发一个主要用bash编写的自动化测试套件,但我想创建一个允许其他用户不通过命令行运行自动化测试的前端(我的rails应用程序)。所以我想基本上我想让用户从数据库或表单字段中选择某些参数,然后将这些参数传递给调用我的bash自动化脚本的ruby脚本。 我希望这很清楚。谢谢!在Rails应用程序中运行ruby脚本

回答

2

如果你想从一个rails应用程序调用脚本,它会变得复杂。你会希望使用后台作业或某种类型的队列来运行这些作业,因为它们会阻止服务器,并且用户将等待完成调用并加载结果,最有可能会超时。

请参阅delayed_job 并且您可能想尝试在Ruby中创建一个可与应用程序接口的小包装脚本。

祝你好运!

+0

感谢您的回应,这是我甚至没有想到的,但我首先想知道的是,我会在应用程序或控制器的模型部分中包含runner ruby​​脚本,还说我有我的ruby脚本保存为一个单独的文件,它应该存储在哪里? – mike 2011-05-25 22:42:48

+0

我会创建一个脚本,它有点与你自己的应用程序分开,感觉你的脚本如何与delayed_job进行交互很重要。或者你可以跳过这一步,直接使用delayed_job。请参阅延迟作业页面上的示例以获取更多信息。 – 2011-05-25 22:47:57

+0

谢谢德文我得到了我的基本应用程序,并正在通过delayed_job教程工作,我只是有几个问题,说我从我的表单提交(我在控制器中创建def)我的参数后打电话给我的红宝石脚本)和我的红宝石包装脚本是在my_app /脚本,我怎么会从我的控制器调用该脚本? B)说如果我想从我的创建def来执行我的bash脚本,系统(“./ my_bash_script&”)会绕过对delayed_job的需求吗? – mike 2011-05-26 01:48:14

2

短期任务,你应该使用systempopen

当任务不再那么他们仍然需要在delayed_job

1

情况下,您可以添加脚本到脚本文件夹中的Rails应用程序的根目录。启动脚本是这样的:

你的脚本可以[此处名称] .RB

为什么我们在环境负荷的原因,所以我们可以在脚本中使用的轨道模式和轨道相关的东西:

#!/bin/env ruby 

ENV['RAILS_ENV'] = "production" # Set to your desired Rails environment name 
require '/[path to your rails app on your server]/config/environment.rb' 
require 'active_record' 

如果你想在你的服务器上运行它,那么你必须在你的服务器上编辑你的crontab。或者你可以使用每当宝石(我有麻烦,但整个宇宙没有)。相反,如果你有heroku,那么有heroku调度程序,使运行脚本很容易。

相关问题