как запустить простой файл на героку - PullRequest
14 голосов
/ 28 декабря 2010

говорят, что у меня есть приложение rails на github, и я размещаю репозиторий github на heroku.

У меня есть ситуация, когда у меня есть простой текстовый файл с кучей слов (он есть в моем репозитории github). Я хочу вставить эти слова (используя простую программу ruby) в базу данных. Вместо использования команды tap, возможно ли в heroku просто запустить мою простую программу ruby ​​и вставить слова в базу данных ... или просто показать их на терминале?

возможно, сбивает с толку, но в основном я хочу знать, как запустить простой скрипт ruby ​​из командной строки heroku?

Ответы [ 5 ]

15 голосов
/ 14 мая 2012

С кедром вы можете запустить bash:

heroku run bash
8 голосов
/ 03 января 2011

Поместите свой скрипт ruby ​​в каталог bin и отправьте его в Heroku. Теперь вы можете выполнить команду оболочки в консоли heroku.

Например, если ваш Ruby-скрипт - bin / foo.rb, вы можете запустить следующую команду в консоли Heroku:

`ruby bin/foo.rb`

Обратите внимание на использование кавычек.

5 голосов
/ 02 апреля 2013

Поскольку вы говорите о приложении Rails на Heroku, как насчет использования rails runner:

heroku run bundle exec rails runner ./path/to/script.rb -a <your-app>

Посмотрите RailsGuides для rails runner для более подробной информации.


В качестве альтернативы превратите этот скрипт в рейк-задачу , если бегун не является вашей чашкой чая (например, для повторяющихся задач ).

0 голосов
/ 09 марта 2011

Если вы хотите запускать произвольные локальные файлы Ruby на Heroku, ознакомьтесь с сообщением в блоге на

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

Есть некоторые вещи, на которые следует обратить внимание (длительное время работы и т. Д.), Но это может быть полезно, если у вас есть файл, который вы еще не отметили, и который вы хотите протестировать или запустить на экземпляре Heroku.

0 голосов
/ 28 декабря 2010
cd /path/to/my/local/repository
heroku console
require 'my_word_importing_script'

В противном случае попробуйте простое приложение Sinatra от имени importorter.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.

Вам также понадобится файл config.ru в репозитории:

require 'importer'
run Sinatra::Application
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...