Chcę uruchomić skrypt (code.rb) za każdym razem, gdy trafi się adres URL/kod.Sinatra: uruchom kod ruby po kliknięciu adresu URL
Jak uruchomić skrypt?
require 'sinatra'
get '/' do
#run the script
end
Chcę uruchomić skrypt (code.rb) za każdym razem, gdy trafi się adres URL/kod.Sinatra: uruchom kod ruby po kliknięciu adresu URL
Jak uruchomić skrypt?
require 'sinatra'
get '/' do
#run the script
end
Albo widelec się inny proces:
system('ruby code.rb')
... lub po prostu load
skrypt do bieżącego kontekstu:
load 'code.rb' # *not* require
musisz load
kod, aby upewnić się, że jest uruchamiany za każdym razem; require
będzie ładować tylko kod raz na pierwsze żądanie, a następnie nie ponownie:
smagic:Desktop phrogz$ cat hi.rb
puts "hi"
smagic:Desktop phrogz$ cat test.rb
require 'sinatra'
get '/require' do
x = require_relative('hi.rb')
"require sez #{x}"
end
get '/load' do
x = load('hi.rb')
"load sez #{x}"
end
smagic:Desktop phrogz$ ruby test.rb
== Sinatra/1.1.2 has taken the stage on 4567 for development with backup from Thin
>> Thin web server (v1.2.7 codename No Hup)
>> Maximum connections set to 1024
>> Listening on 0.0.0.0:4567, CTRL+C to stop
hi
127.0.0.1 - - [16/Jan/2011 20:49:43] "GET /require HTTP/1.1" 200 16 0.0019
127.0.0.1 - - [16/Jan/2011 20:49:46] "GET /require HTTP/1.1" 200 17 0.0005
hi
127.0.0.1 - - [16/Jan/2011 20:49:52] "GET /load HTTP/1.1" 200 13 0.0009
hi
127.0.0.1 - - [16/Jan/2011 20:49:54] "GET /load HTTP/1.1" 200 13 0.0008
127.0.0.1 - - [16/Jan/2011 20:50:09] "GET /require HTTP/1.1" 200 17 0.0005
127.0.0.1 - - [16/Jan/2011 20:50:12] "GET /require HTTP/1.1" 200 17 0.0005
Wyjście hi
przychodzi przed wejściem żądanie w dzienniku; możesz zobaczyć, że żądania "wymagaj" wyświetlają się za pierwszym razem tylko hi
, a żądania do "ładowania" pokazują za każdym razem hi
. Tutaj jest wyjście z serwera, gdzie true
wskazuje, że kod w pliku faktycznie uruchomić i false
pokazuje, że nie było:
smagic:~ phrogz$ curl http://localhost:4567/require
require sez true
smagic:~ phrogz$ curl http://localhost:4567/require
require sez false
smagic:~ phrogz$ curl http://localhost:4567/load
load sez true
smagic:~ phrogz$ curl http://localhost:4567/load
load sez true
smagic:~ phrogz$ curl http://localhost:4567/require
require sez false
smagic:~ phrogz$ curl http://localhost:4567/require
require sez false
Zważywszy, że twój jest akceptowane odpowiedź, czy mogę zasugerować, że należy go zaktualizować do zaproponuj 'load' zamiast' require', za moją odpowiedź? – Phrogz
Ma rację, wiesz. – tekknolagi
Dobra uwaga! Wymiana pieniędzy. –