Я использую
# my_app.rb
load 'index.rb'
и запустите серию вроде этого
ruby my_app.rb
но он никогда не перезагружает никаких изменений, внесенных мной на индексной странице.
Я что-то пропустил здесь?
Я использую
# my_app.rb
load 'index.rb'
и запустите серию вроде этого
ruby my_app.rb
но он никогда не перезагружает никаких изменений, внесенных мной на индексной странице.
Я что-то пропустил здесь?
См. Часто задаваемые вопросы по Sinatra,
Как мне обновить приложение для Sinatra?
Во-первых, перезагрузка кода процесса в Ruby сложна и имеет решение, которое работает для каждого сценария, технически невозможно.
Вот почему мы рекомендуем вам выполнять перезагрузку вне процесса.
Сначала вам нужно установить rerun, если у вас уже есть:
$ gem install rerun
Теперь, если вы запустите приложение Sinatra следующим образом:
$ ruby app.rb
Все, что вам нужно сделать для перезагрузки, - это сделать следующее:
$ rerun 'ruby app.rb'
Если вы, например, используете rackup, вместо этого следующее:
$rerun 'rackup'
Вы получаете идею.
Если вы все еще хотите перезагрузить процесс, проверьте
Sinatra::Reloader
.
gem install sinatra-reloader
require 'sinatra'
require 'sinatra/reloader'
Примечание: он будет перезагружать только обработчики sinatra (и, возможно, некоторые команды конфигурации сервера sinatra), но не настраиваемые файлы, которые необходимо перезагрузить вручную.
UPD через 9 лет: кажется, что уже можно перезагрузить другие файлы, используя also_reload
, dont_reload
и after_reload
- https://github.com/sinatra/sinatra/pull/1150
Вы можете использовать драгоценный камень rerun
.
gem install rerun
rerun 'ruby app.rb'
ИЛИ если вы используете rackup
rerun 'rackup'
gem install 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
Подробнее см. Пассажир documentation.
Мне нравится драгоценный камень дробовика. Если вы используете модульное приложение Sinatra и имеете файл config.ru, его легко запустить.
shotgun config.ru
Проверьте драгоценный камень здесь. Это довольно прямолинейно, и никакой конфигурации не требуется.
В Windows я использую перезапустить gem для этого:
restart ruby my_app.rb
или, с помощью rawnup:
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
будут перезагружаться каждый раз.
Если вы изменяете только свои шаблоны, синатра всегда будет перерисовывать их, если вы настроите свою среду на развитие:
ruby app.rb -e development