Как заставить Sinatra автоматически перезагружать файл после каждого изменения?
Вопрос
Я использую
# my_app.rb
load 'index.rb'
и начинайте разрывать вот так
ruby my_app.rb
но он никогда не перезагружает никаких изменений, которые я внес на индексную страницу.
Я что-нибудь здесь пропустил?
Решение
Смотрите на Часто задаваемые вопросы о Синатре,
"Как мне заставить мое приложение Sinatra перезагружаться при внесении изменений?"
Во-первых, в процессе перезагрузки кода в Ruby-это жесткий и имеющий решение, которое работает для каждого сценария-это технически невозможно.
Именно поэтому мы рекомендуем вам выполнять перезагрузку вне процесса.
Сначала вам нужно установить повторный запуск если вы еще этого не сделали:
$ gem install rerun
Теперь, если вы запустите свое приложение Sinatra следующим образом:
$ ruby app.rb
Все, что вам нужно сделать для перезагрузки, это вместо этого сделать это:
$ rerun 'ruby app.rb'
Если вы, например, используете rackup, вместо этого выполните следующее:
$ повторный запуск 'rackup'
Вы уловили идею.
Если вы все еще хотите перезагрузку в процессе, проверьте
Sinatra::Reloader
.
Другие советы
установка драгоценного камня Sinatra-Reloader
require 'sinatra'
require 'sinatra/reloader'
Примечание:он перезагрузит только обработчики Sinatra (и, возможно, некоторые команды конфигурации сервера Sinatra), но не пользовательские файлы, которые вам придется перезагружать вручную.
Вы можете использовать rerun
драгоценный камень.
gem install rerun
rerun 'ruby app.rb'
ИЛИ если вы используете Rackup
rerun 'rackup'
установка драгоценного камня Sinatra-Reloader
require 'sinatra/base'
require "sinatra/reloader"
class MyApp < Sinatra::Base
register Sinatra::Reloader
get '/' do
"Hello Testing1!"
end
end
Возможно, вы захотите установить переменную среды для разработки и условно загрузить драгоценный камень.
Когда вы запускаете приложение с Пассажирский автономный, просто создайте tmp/always_restart
файл:
$ touch tmp/always_restart.txt
См. Пассажир документация для получения дополнительной информации.
Мне нравится драгоценный камень «Дробовик».Если вы используете модульное приложение Sinatra и у вас есть файл config.ru, его легко запустить.
shotgun config.ru
Проверьте драгоценный камень здесь.Это довольно просто и не требует настройки.
В Windows я использую свой перезапустить драгоценный камень для этого:
restart ruby my_app.rb
или, с помощью стойки:
restart rackup
Видеть здесь для получения дополнительной информации, надеюсь, вы найдете ее полезной.
Вы можете использовать стойку для охраны.Снят с статья на dblock.org:
Добавьте это в свой Gemfile:
group :development do
gem "guard"
gem "guard-bundler"
gem "guard-rack"
end
Затем создайте Guardfile
в корне вашего проекта с таким содержимым:
guard 'bundler' do
watch('Gemfile')
end
guard 'rack' do
watch('Gemfile.lock')
watch(%r{^(config|app|api)/.*})
end
Наконец, запустите Guard, вот так: bundle exec guard
, и rackup
будет перезагружаться каждый раз.
Если вы меняете только свои шаблоны, Sinatra всегда будет перерисовывать их, если вы настроите свою среду для разработки:
ruby app.rb -e development