Как заставить Sinatra автоматически перезагружать файл после каждого изменения?

StackOverflow https://stackoverflow.com/questions/1247125

  •  12-09-2019
  •  | 
  •  

Вопрос

Я использую

# 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
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top