Die Programmiersprache Ruby

Blog|

Forum|

Wiki  


Alle Zeiten sind UTC + 1 Stunde

Ein neues Thema erstellen Auf das Thema antworten  [ 6 Beiträge ] 
Autor Nachricht
 Betreff des Beitrags: Sinatra und 'reload'
BeitragVerfasst: 25 Mai 2009, 10:47 
Offline
Hacker
Benutzeravatar

Registriert: 10 Jun 2004, 10:07
Beiträge: 411
Wohnort: Erde
Moinmoin,

ich schaue mir gerade Sinatra http://www.sinatrarb.com/ an ... und verstehe nicht warum das 'reload' nicht zu funktionieren scheint (aber vielleicht funktioniere nur ich (noch) nicht so recht).

Ich habe erwartet, dass in der 'development' Umgebung 'alles' neu geladen wird - insbesondere auch die Routen. Als [b]sehr[b] einfacher Start:

1
2
3
4
5
require 'sinatra'

get '/*' do | stuff |
"Aha: #{ stuff }<br/>\n" # + "...und mehr!\n"
end


Server starten:

1
2
ruby untitled.rb 
== Sinatra/0.9.2 has taken the stage on 4567 for development with backup from Mongrel

So weit so gut. Eine Seite holen:

1
2
curl localhost:4567
Aha: <br/>
Auch das hier geht wie erwartet:


1
2
curl localhost:4567/etwas
Aha: etwas<br/>

Sehr schön. Wenn ich jetzt das '#' im Code entferne:

1
2
3
4
require 'sinatra'
get '/*' do | stuff |
"Aha: #{ stuff}<br/>\n" + "...und mehr!\n"
end

Hätte ich gedacht auch "... und mehr" zu bekommen, aber...


1
2
curl localhost:4567/etwas
Aha: etwas<br/>

... nichts hat sich geändert.

Die hiesige Umgebung:

1
2
3
4
5
6
7
8
ruby -v
ruby 1.8.7 (2008-08-11 patchlevel 72) [i686-darwin9]
gem list "(sina|mong)"

*** LOCAL GEMS ***

mongrel (1.1.5)
sinatra (0.9.2)


Was habe ich also nicht mit bekommen?

Frohes Schaffen

Zenbambusgarten

_________________
Better living through automation...
...because life's too short for manual testing


Nach oben
 Profil  
 
 Betreff des Beitrags:
BeitragVerfasst: 25 Mai 2009, 11:06 
Offline
Hacker

Registriert: 03 Feb 2008, 14:36
Beiträge: 467
in der CHANGES zur neuesten Version 0.9.2:
Zitat:
* Development mode source file reloading has been removed. The
"shotgun" (http://rtomayko.github.com/shotgun/) program can be
used to achieve the same basic functionality in most situations.
Passenger users should use the "tmp/always_restart.txt"
file (http://tinyurl.com/c67o4h). [#166 / Ryan Tomayko]

_________________


1
2
3
4
5
30.times{|i|m="\r[";
30.times{|x|
m<<(x==i&&(i%2==0&&'C'||'c')||(x<i&&'-'||(x%2==0&&' '||'o')))
};
print m,']';STDOUT.flush;sleep 0.2};puts


Nach oben
 Profil  
 
 Betreff des Beitrags:
BeitragVerfasst: 25 Mai 2009, 11:25 
Offline
Interpreter
Benutzeravatar

Registriert: 05 Jun 2005, 00:54
Beiträge: 3225
Yup. Der Reloading-Support wurde entfernt weil er zu viele Probleme machte.

Mit Shotgun läuft das ganze für Sinatra transparent ab.

_________________


1
2
3
alias L lambda
p L{|y|L{|f|y[L{|x|f[f][x]}]}[L{|f|y[L{|x|f[f][x]}]}]}[L{|z|L{|l|l.empty?? 0:1+z[l.drop(1)]}}][%w<a b c d e f g h i j>]
#=>10


Nuclear Powered Soup | Nuclear Powered Blog


Nach oben
 Profil  
 
 Betreff des Beitrags:
BeitragVerfasst: 25 Mai 2009, 12:06 
Offline
Hacker
Benutzeravatar

Registriert: 10 Jun 2004, 10:07
Beiträge: 411
Wohnort: Erde
Moinmoin,

Vielen Dank, mit shotgun geht's sehr gut.

Frohes Schaffen

Zehnbambusgarten

_________________
Better living through automation...
...because life's too short for manual testing


Nach oben
 Profil  
 
 Betreff des Beitrags: Re: Sinatra und 'reload'
BeitragVerfasst: 11 Jun 2009, 16:35 
Offline
Geselle

Registriert: 06 Jul 2006, 08:54
Beiträge: 147
Ich schaue mir auch gerade Sinatra 0.9.2 an, bin auch darüber gestolpert, dass der automatische Reload nicht mehr funktioniert und habe jetzt aber ein Problem mit shotgun 0.3. Syntaxfehler sorgen dafür, dass einfach gar nichts angezeigt wird. Dort hätte ich natürlich gerne den üblichen von Sinatra::ShowExceptions erzeugten Debug-Screen. Ich vergesse nämlich laufend das "end" am Ende einer Methode. Lässt sich da etwas machen?

Und warum funktioniert nicht, eine "config.ru"-Datei anzulegen, in der ich "use Rack::Reloader" benutze und dann meine eigentliche Sinatra-App require? Hatte ich mir aus einem Tutorial herausgesucht. Dann könnte ich einfach "rackup" eingeben und hätte auch schon die richtige Form für z.B. Heroku.

Stefan


Nach oben
 Profil  
 
 Betreff des Beitrags: Re: Sinatra und 'reload'
BeitragVerfasst: 11 Jun 2009, 17:31 
Offline
Geselle

Registriert: 06 Jul 2006, 08:54
Beiträge: 147
Ich rede einfach mal mit mir selbst. Hier habe ich einen nützlichen Tipp gefunden, wie man auf shotgun verzichten kann. Hoffentlich kommt etwas in der Art in 0.9.3. Ein einfaches `reset!` sorgt allerdings dafür, dass einem die Templates aus der Datei selbst verloren gehen. Für mich funktioniert die folgende Zeile ganz oben in meiner App zuammen mit einer config.ru-Datei:



Sinatra::Application.reset!; use_in_file_templates!

Syntaxfehler muss ich mir trotzdem immer noch von der Konsole holen. Sinatra bleibt dann einfach bei der alten Version.

Stefan


Nach oben
 Profil  
 
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen Auf das Thema antworten  [ 6 Beiträge ] 

Alle Zeiten sind UTC + 1 Stunde


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 1 Gast


Du darfst keine neuen Themen in diesem Forum erstellen.
Du darfst keine Antworten zu Themen in diesem Forum erstellen.
Du darfst deine Beiträge in diesem Forum nicht ändern.
Du darfst deine Beiträge in diesem Forum nicht löschen.
Du darfst keine Dateianhänge in diesem Forum erstellen.

Suche nach: