J'utilise
# my_app.rb
load 'index.rb'
et commencez le serveur comme ça
Ruby my_app.rb
mais il ne recharge jamais les modifications apportées à la page d'index.
Ai-je manqué quelque chose ici?
Voir le Sinatra FAQ ,
"Comment faire pour que mon application Sinatra soit rechargée avec les modifications?"
Tout d’abord, il est difficile de recharger du code en cours de traitement dans Ruby. Une solution qui fonctionne pour tous les scénarios est techniquement impossible.
C'est pourquoi nous vous recommandons d'effectuer un rechargement hors processus.
Vous devez d’abord installer relancer si vous ne l’avez pas déjà fait:
$ gem install rerun
Maintenant, si vous démarrez votre application Sinatra comme ceci:
$ Ruby app.rb
Pour ce faire, il vous suffit de recharger:
$ rerun 'Ruby app.rb'
Si vous utilisez par exemple rackup, faites plutôt le suivant:
$ relance 'rackup'
Vous avez eu l'idée.
Si vous souhaitez toujours effectuer un rechargement en cours de processus, consultez
Sinatra::Reloader
.
gem installer sinatra-reloader
require 'sinatra'
require 'sinatra/reloader'
Remarque : il ne rechargera que les gestionnaires sinatra (et éventuellement certaines commandes de configuration du serveur sinatra), mais pas les fichiers personnalisés, que vous devez recharger manuellement.
Vous pouvez utiliser la gemme rerun
.
gem install rerun
rerun 'Ruby app.rb'
OU si vous utilisez rackup
rerun 'rackup'
gem installer sinatra-reloader
require 'sinatra/base'
require "sinatra/reloader"
class MyApp < Sinatra::Base
register Sinatra::Reloader
get '/' do
"Hello Testing1!"
end
end
Vous pouvez définir la variable d'environnement sur développement et charger la gemme de manière conditionnelle.
Lorsque vous exécutez l'application avec Passenger Standalone , créez simplement un fichier tmp/always_restart
:
$ touch tmp/always_restart.txt
Voir Passager documentation pour plus d’informations.
J'aime la gemme Shotgun. Si vous utilisez une application modulaire Sinatra et disposez d'un fichier config.ru, son exécution est simple.
shotgun config.ru
Vérifiez la gemme ici . C'est assez simple et aucune configuration n'est nécessaire.
Sous Windows, j'utilise mon restart gem pour cela:
restart Ruby my_app.rb
ou, avec rackup:
restart rackup
Voir ici pour plus d’informations, espérons que vous le trouverez utile.
Vous pouvez utiliser le garde-rack. Extrait d'un article sur dblock.org :
Ajoutez ceci à votre Gemfile:
group :development do
gem "guard"
gem "guard-bundler"
gem "guard-rack"
end
Ensuite, créez une Guardfile
à la racine de votre projet avec ce contenu:
guard 'bundler' do
watch('Gemfile')
end
guard 'rack' do
watch('Gemfile.lock')
watch(%r{^(config|app|api)/.*})
end
Enfin, lancez Guard, comme suit: bundle exec guard
et rackup
rechargera à chaque fois.
Si vous ne modifiez que vos modèles, sinatra les rendra toujours si vous définissez votre environnement pour le développement:
Ruby app.rb -e development