说我在github上有我的rails应用程序,并且正在heroku上部署github repo。
我有一种情况,我有一个简单的文本文件与一堆字(它在我的github回购)。我想将这些单词(使用简单的ruby程序)插入到数据库中。而不是使用tap命令,是否可以在heroku中运行我的简单ruby程序并将单词插入数据库......或者只是在终端上显示它们?
可能令人困惑,但基本上我想知道如何从heroku命令行运行简单的ruby脚本?
答案 0 :(得分:15)
使用雪松,你可以运行bash:
heroku run bash
答案 1 :(得分:8)
将ruby脚本放在bin目录中,git将其推送到Heroku。现在,您可以在heroku控制台中执行shell命令。
例如,如果您的Ruby脚本是bin / foo.rb,则可以在Heroku控制台中运行以下命令:
`ruby bin/foo.rb`
注意使用反引号。
答案 2 :(得分:5)
由于你在谈论Heroku上的Rails应用程序,如何使用 rails runner
:
heroku run bundle exec rails runner ./path/to/script.rb -a <your-app>
有关详细信息,请查看RailsGuides for rails runner
。
或者,turn that script into a rake task如果跑步者不是你的一杯茶(例如,recurring tasks)。
答案 3 :(得分:0)
cd /path/to/my/local/repository
heroku console
require 'my_word_importing_script'
如果不这样做,请尝试使用简单的Sinatra应用程序作为importer.rb?
require 'sinatra'
require 'sequel'
configure do
// connect to the database with sequel
end
get '/import/a-long-unguessable-url-fdsjklgfuiwfnjfkdsklfds' do
words = YAML.load(File.join(File.dirname(__FILE__), "my_list_of_words.yaml"))
words.each do |word|
// Your logic for inserting into the database with sequel
end
end
点击浏览器中的http://example.com/import/a-long-unguessable-url-fdsjklgfuiwfnjfkdsklfds即可启动导入。方便外部cron任务。
您还需要repo中的config.ru文件:
require 'importer'
run Sinatra::Application
答案 4 :(得分:0)
如果您想在Heroku上运行任意本地Ruby文件,请查看
上的博客文章http://www.22ideastreet.com/debug/run-local-scripts-on-heroku
有一些注意事项(长时间运行等),但如果您有一个尚未签入的文件想要在Heroku实例上进行测试或运行,则可能会有用。