Как запустить простой файл на героку
Скажем, у меня есть приложение rails на github, и я развертываю репозиторий github на heroku.
У меня есть ситуация, когда у меня есть простой текстовый файл с кучей слов (он находится в моем реестре github). Я хочу вставить эти слова (используя простую рубиновую программу) в базу данных. Вместо использования команды tap, можно ли в heroku просто запустить мою простую рубиновую программу и вставить слова в базу данных... или просто показать их на терминале?
может быть запутанным, но в основном я хочу знать, как запустить простой ruby script из командной строки героя?
Ответы
Ответ 1
Поместите ruby script в каталог bin и git нажмите на Heroku. Теперь вы можете выполнить команду оболочки в консоли heroku.
Например, если ваш Ruby script является bin/foo.rb, вы можете запустить следующую команду в консоли Heroku:
`ruby bin/foo.rb`
Обратите внимание на использование обратных ссылок.
Ответ 2
С кедром вы можете запустить bash:
heroku run bash
Ответ 3
Поскольку вы говорите о приложении Rails на Heroku, как насчет использования rails runner
:
heroku run bundle exec rails runner ./path/to/script.rb -a <your-app>
Для более подробной информации смотрите RailsGuides для rails runner
.
В качестве альтернативы превратите это script в рейк-задачу, если бегун не ваша чашка чая (например, для
Ответ 4
Если вы хотите запустить произвольные локальные файлы Ruby на Heroku, просмотрите сообщение в блоге
http://www.22ideastreet.com/debug/run-local-scripts-on-heroku
Есть несколько вещей, на которые нужно обратить внимание (длительное время работы и т.д.), но может быть полезно, если у вас есть файл, который вы не проверяли, чтобы проверить или запустить экземпляр Heroku.
Ответ 5
cd /path/to/my/local/repository
heroku console
require 'my_word_importing_script'
В противном случае попробуйте простое приложение Sinatra в качестве импортера .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