如何在heroku上运行一个简单的文件

说我在github上有我的rails应用程序,并在heroku上部署了github repo。

我有一个情况,我有一个简单的文本文件与一堆字(它在我的github回购)。 我想将这些单词(使用简单的ruby程序)插入到数据库中。 是否可以在heroku中运行我的简单ruby程序并将单词插入数据库……或者只是在终端上显示它们,而不是使用tap命令?

也许令人困惑,但基本上我想知道如何从heroku命令行运行简单的ruby脚本?

将ruby脚本放在bin目录中,git将其推送到Heroku。 现在,您可以在heroku控制台中执行shell命令。

例如,如果您的Ruby脚本是bin / foo.rb,则可以在Heroku控制台中运行以下命令:

`ruby bin/foo.rb` 

注意使用反引号。

使用雪松,你可以运行bash:

 heroku run bash 

既然您正在谈论Heroku上的Rails应用程序,那么如何使用rails runner

 heroku run bundle exec rails runner ./path/to/script.rb -a  

有关更多详细信息,请查看RailsGuides for rails runner


或者,如果跑步者不是你的一杯茶(例如,用于重复性任务 ), 则将该脚本转换为rake任务

 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 

如果你想在Heroku上运行任意本地Ruby文件,请查看博客文章

http://www.22ideastreet.com/debug/run-local-scripts-on-heroku

有一些事情需要注意(长时间运行等)但如果你有一个你没有签入的文件想要在Heroku实例上测试或运行它可能会很有用。