Comment obtenir Sinatra à l'auto-reload le fichier après chaque changement?

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

  •  12-09-2019
  •  | 
  •  

Question

J'utilise

# my_app.rb
load 'index.rb'

et démarrer le serveur comme ceci

ruby my_app.rb

mais il n'a jamais reload tout changement que j'ai fait à la page d'index.
Ai-je raté quelque chose ici?

Était-ce utile?

La solution

Voir la Sinatra FAQ ,

"Comment puis-je faire mon reload application Sinatra sur les changements?"

  

Tout d'abord, le code en cours de rechargement dans Ruby est dure et ayant une   solution qui fonctionne pour tous les scénarios est techniquement impossible.

     

Quelle est la raison pour laquelle nous vous recommandons de le faire hors processus de rechargement.

     

Vous devez d'abord installer réexécutez si vous avez pas déjà:

 $ gem install rerun
     

Maintenant, si vous démarrez votre application Sinatra comme ceci:

$ ruby app.rb
     

Tout ce que vous avez à faire pour le rechargement do au lieu ceci:

$ rerun 'ruby app.rb'
     

Si vous êtes par exemple en utilisant rackup, au lieu faire   ce qui suit:

     

réexécutée $ 'rackup'

     

Vous avez l'idée.

     

Si vous voulez toujours en cours de rechargement, consultez Sinatra::Reloader .

Autres conseils

  

gem install-sinatra reloader

require 'sinatra'
require 'sinatra/reloader'

Remarque :. Il rechargera que les gestionnaires (et, sinatra peut-être des commandes de configuration du serveur), mais sinatra 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 install-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 pour le développement et la charge sous condition la pierre précieuse.

Lorsque vous exécutez l'application avec Passager autonome, il suffit de créer un fichier tmp/always_restart:

$ touch tmp/always_restart.txt

Voir la documentation voyageurs pour plus d'informations.

J'aime le petit bijou de fusil de chasse. Si vous utilisez une application Sinatra modulaire et un fichier config.ru il est facile à exécuter.

shotgun config.ru

Vérifier le joyau . Il est assez simple et sans aucune configuration nécessaire.

Sous Windows, je me sers de mon redémarrer gem pour cela:

restart ruby my_app.rb

ou, avec rackup:

restart rackup

Voir pour plus d'informations, espérons qu'elle vous sera utile.

Vous pouvez utiliser rack de garde. Tiré de à dblock.org :

Ajoutez ceci à votre Gemfile:

group :development do
  gem "guard"
  gem "guard-bundler"
  gem "guard-rack"
end

Ensuite, créez un 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, la Garde courir, comme suit:. bundle exec guard et rackup rechargera chaque fois

Si vous ne changez vos modèles sinatra toujours les rerender si vous définissez votre environnement pour le développement:

ruby app.rb -e development
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top