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

时间:2010-12-28 04:55:17

标签: ruby heroku

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

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

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

5 个答案:

答案 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实例上进行测试或运行,则可能会有用。