8
votes

Rechargement d'une application SINATRA sur chaque demande sous Windows

J'ai configuré rack :: recharge en fonction de cette thread xxx

exécuté avec mince via mince start -r config.ru , mais il ne recharge que des itinéraires nouvellement ajoutés. Lorsque je change déjà de la route existante, il exécute toujours l'ancien code.

Lorsque j'ajoute un nouvel itinéraire, il le recharge correctement, il est donc accessible, mais cela ne rechargne rien d'autre.

Par exemple, si je modifiais des itinéraires vers xxx

que / servirait toujours foo , même si a changé, mais / foo rechargerait et servirait correctement baz .

est ce comportement normal, ou je manque quelque chose? Je m'attendais à ce que tout le fichier source soit rechargé. Le seul moyen autour de je peux penser à l'heure actuelle consiste à redémarrer un serveur Web entier lorsque les changements de système de fichiers.

Je cours sur Windows Vista X64, donc je ne peux pas utiliser fusil de chasse à cause de fourchette () .


0 commentaires

4 Réponses :


0
votes

fait fusil de chasse ne fonctionne pas sous Windows?

du Readme: < pré> xxx

Il s'agit d'une version de rechargement automatique de la commande rackup expédiée avec Étagère. Il peut être utilisé comme alternative à la logique de rechargement complexe fournie par des cadres Web ou dans des environnements qui ne prennent pas en charge le rechargement des applications.

La commande de fusil de chasse démarre l'un des serveurs prises en charge de rack (par exemple, MONDREL, MINIR, webrick) et écoute les demandes mais ne charge aucune partie de la réelle application. Chaque fois qu'une demande est reçue, il fourchette, charge l'application dans Le processus d'enfant, traite la demande et sort du processus d'enfant. Les Le résultat est propre, le rechargement à l'échelle de l'application de tous les fichiers source et modèles sur chaque demande.


1 commentaires

Désolé, je n'ai pas vu votre note sur le fusil de chasse



21
votes

Vous pouvez essayer Sinatra-reloader , connu pour bien fonctionner sur Windows (également, C'est plus rapide que le fusil de chasse).


2 commentaires

Nous avons eu ce problème nous-mêmes, car deux de mon équipe utilisent Windows et deux sont sur Mac. C'est la solution que nous avons allée, semble bien fonctionner jusqu'à présent.


Non seulement plus rapide mais je trouve plus facile à utiliser Sinatra-Reloader :-)



5
votes

Ceci fonctionne:

# config.ru
require 'rubygems'
require 'sinatra'
require 'rack/reloader'
require 'app'

set :environment, :development

use Rack::Reloader, 0 if development?
run Sinatra::Application

# app.rb  
Sinatra::Application.reset! 
get '/' do
  'foo'
end


1 commentaires

Parfait! Pour une application modulaire, exécutez MyAppClassname (config.ru) et inclure le sinatra :: Application.Reset! dans la classe d'applications (app.rb).



0
votes

Vous pouvez également essayer d'utiliser Trinidad un conteneur de rack Jruby basé sur Tomcat. D'après mon expérience, il modifie le rechargement par défaut sans avoir à modifier vos fichiers source. Sang sanglant aussi aussi. Évidemment, pas de bien si vous utilisez des bibliothèques natales, mais si vous déployez sous Windows, vous êtes probablement utilisé pour adopter une approche pure-rubis.

Sa syntaxe est aussi simple que la fine approche: P>

jruby -S trinidad -r config.ru


0 commentaires