这可能是一个愚蠢的问题,但我只是想知道在哪里,或者它是否有可能运行一个ruby脚本,这与我希望它运行的rails应用程序无关。澄清,我正在开发一个主要用bash编写的自动化测试套件,但我想创建一个允许其他用户不通过命令行运行自动化测试的前端(我的rails应用程序)。所以我想基本上我想让用户从数据库或表单字段中选择某些参数,然后将这些参数传递给调用我的bash自动化脚本的ruby脚本。 我希望这很清楚。谢谢!在Rails应用程序中运行ruby脚本
3
A
回答
2
如果你想从一个rails应用程序调用脚本,它会变得复杂。你会希望使用后台作业或某种类型的队列来运行这些作业,因为它们会阻止服务器,并且用户将等待完成调用并加载结果,最有可能会超时。
请参阅delayed_job 并且您可能想尝试在Ruby中创建一个可与应用程序接口的小包装脚本。
祝你好运!
2
短期任务,你应该使用system
或popen
当任务不再那么他们仍然需要在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调度程序,使运行脚本很容易。
相关问题
- 1. 在Rails应用程序中执行Ruby脚本
- 2. NoDatabaseError运行Ruby Rails应用程序
- 3. 在我的rails应用程序之外运行一个Ruby脚本?
- 4. 如何在Rails应用程序中测试ruby脚本
- 5. Shopify应用程序 - 在Ruby on Rails上使用脚本标记应用程序
- 6. 不能在我的Ruby脚本在Rails应用程序
- 7. 在Ruby gem中运行rails应用程序?
- 8. 如何从Sinatra应用程序运行外部Ruby脚本
- 9. 在rails应用程序重启时执行脚本的脚本
- 10. 如何在Ruby on Rails中运行CGI Ruby脚本?
- 11. 在Rails应用程序中运行JavaScript
- 12. 在Rails应用程序和Ruby脚本之间共享模型
- 13. 从Rails控制器运行Ruby脚本
- 14. 如何从Rails应用程序运行Python脚本?
- 15. 不能在Rails应用程序运行Ruby中的开放本地主机
- 16. 在线运行ruby脚本
- 17. 在Apache上运行Ruby应用程序
- 18. 从另一个rails应用程序在一个rails应用程序上运行一个shell脚本
- 19. 在Google表格应用程序中运行应用程序脚本
- 20. 在python脚本中终止正在运行的应用程序
- 21. 向Ruby脚本公开Rails应用程序环境
- 22. 在Ruby/Rails应用程序中允许用户定义的脚本
- 23. 在heroku上的Flask应用程序中运行PHP脚本
- 24. 在.NET窗口应用程序中运行powershell脚本
- 25. 如何在应用程序脚本中进行数学运算?
- 26. 在Google窗体应用程序脚本中运行onload功能
- 27. 如何在Android应用程序中运行shell脚本?
- 28. 我可以在Silverlight应用程序中运行PowerShell脚本吗?
- 29. 在clickonce应用程序中运行捆绑的python脚本
- 30. PySerial应用程序在shell中运行,不是py脚本
感谢您的回应,这是我甚至没有想到的,但我首先想知道的是,我会在应用程序或控制器的模型部分中包含runner ruby脚本,还说我有我的ruby脚本保存为一个单独的文件,它应该存储在哪里? – mike 2011-05-25 22:42:48
我会创建一个脚本,它有点与你自己的应用程序分开,感觉你的脚本如何与delayed_job进行交互很重要。或者你可以跳过这一步,直接使用delayed_job。请参阅延迟作业页面上的示例以获取更多信息。 – 2011-05-25 22:47:57
谢谢德文我得到了我的基本应用程序,并正在通过delayed_job教程工作,我只是有几个问题,说我从我的表单提交(我在控制器中创建def)我的参数后打电话给我的红宝石脚本)和我的红宝石包装脚本是在my_app /脚本,我怎么会从我的控制器调用该脚本? B)说如果我想从我的创建def来执行我的bash脚本,系统(“./ my_bash_script&”)会绕过对delayed_job的需求吗? – mike 2011-05-26 01:48:14