ruby - rails - ¿Cómo hacer que Sinatra vuelva a cargar automáticamente el archivo después de cada cambio?
sinatra ruby tutorial (9)
estoy usando
# my_app.rb
load ''index.rb''
y comienza el servidor de esta manera
ruby my_app.rb
pero nunca vuelve a cargar los cambios que hice en la página de índice.
¿Extrañé algo aquí?
joya instalar sinatra-reloader
require ''sinatra''
require ''sinatra/reloader''
Nota : solo volverá a cargar controladores de sinatra (y, tal vez, algunos comandos de configuración del servidor de sinatra), pero no archivos personalizados, que deberá volver a cargar manualmente.
Cuando ejecuta la aplicación con Passenger Standalone , simplemente cree un archivo tmp/always_restart
:
$ touch tmp/always_restart.txt
Consulte la documentation pasajero para obtener más información.
En Windows, estoy usando mi joya de reinicio para esto:
restart ruby my_app.rb
o, con rackup:
restart rackup
Consulte here para obtener más información, espero que la encuentre útil.
Me gusta la gema Shotgun. Si está utilizando una aplicación modular de Sinatra y tiene un archivo config.ru, es fácil de ejecutar.
shotgun config.ru
Consulta la joya here . Es bastante directo y no se necesita configuración.
Puedes usar la gema de rerun
.
gem install rerun
rerun ''ruby app.rb''
O si está usando rackup
rerun ''rackup''
Si solo cambia sus plantillas, sinatra siempre las reenviará si configura su entorno para el desarrollo:
ruby app.rb -e development
Usted podría usar Guard-rack. Levantado de un artículo en dblock.org :
Agregue esto a su Gemfile:
group :development do
gem "guard"
gem "guard-bundler"
gem "guard-rack"
end
Luego, crea un Guardfile
en la raíz de tu proyecto con este contenido:
guard ''bundler'' do
watch(''Gemfile'')
end
guard ''rack'' do
watch(''Gemfile.lock'')
watch(%r{^(config|app|api)/.*})
end
Por último, ejecute Guard, así: bundle exec guard
, y rackup
volverá a cargar cada vez.
Ver las preguntas frecuentes de Sinatra ,
"¿Cómo puedo hacer que mi aplicación Sinatra vuelva a cargar en los cambios?"
En primer lugar, la recarga de código en proceso en Ruby es difícil y tener una solución que funcione para cada escenario es técnicamente imposible.
Por eso, le recomendamos que realice una recarga fuera de proceso.
Primero necesita instalar la rerun si aún no lo ha hecho:
$ gem install rerun
Ahora si inicia su aplicación Sinatra de esta manera:
$ ruby app.rb
Todo lo que tienes que hacer para volver a cargar es hacer esto:
$ rerun ''ruby app.rb''
Si, por ejemplo, está utilizando rackup, en su lugar, haga lo siguiente:
$ rerun ''rackup''
Entiendes la idea.
Si aún deseas una recarga en proceso, echa un vistazo a
Sinatra::Reloader
.
joya instalar sinatra-reloader
require ''sinatra/base''
require "sinatra/reloader"
class MyApp < Sinatra::Base
register Sinatra::Reloader
get ''/'' do
"Hello Testing1!"
end
end
Es posible que desee establecer la variable de entorno para el desarrollo y cargar condicionalmente la gema.