जवाबों:
सिनात्रा FAQ देखें ,
"मैं अपने सिनात्रा ऐप को परिवर्तनों पर कैसे लोड करूं?"
सबसे पहले, इन-प्रोसेस कोड रूबी में पुनः लोड करना कठिन है और एक समाधान है जो हर परिदृश्य के लिए काम करता है तकनीकी रूप से असंभव है।
यही कारण है कि हम आपको पुनः लोड करने की प्रक्रिया करने की सलाह देते हैं।
यदि आपको पहले से नहीं है तो पहले आपको फिर से स्थापित करना होगा:
$ gem install rerunअब अगर आप अपना सिनात्रा ऐप इस तरह शुरू करते हैं:
$ ruby app.rbआपको इसे पुनः लोड करने के लिए बस इतना करना है:
$ rerun 'ruby app.rb'यदि आप उदाहरण के लिए रैकअप का उपयोग कर रहे हैं, तो इसके बजाय निम्नलिखित करें:
$ रेरुन 'रैकअप'
तुम्हें नया तरीका मिल गया है।
यदि आप अभी भी इन-प्रोसेस पुनः लोड करना चाहते हैं, तो देखें
Sinatra::Reloader।
rerun। आप डिफ़ॉल्ट विकल्पों के साथ ही सीमित नहीं हैं rerun 'rackup'। किसी भी पोर्ट पर किसी भी सर्वर को चलाना संभव है। यहां उदाहरण है कि पोर्ट नंबर 5678 पर प्यूमा को कैसे चलाया जाए -rerun 'rackup -s puma -p 5678 app/sinatra/config.ru'
मणि स्थापित sinatra-reloader
require 'sinatra'
require 'sinatra/reloader'
नोट : यह केवल sinatra हैंडलर को फिर से लोड करेगा (और, शायद कुछ sinatra सर्वर कॉन्फ़िगरेशन कमांड), लेकिन कस्टम फाइलें नहीं, जिसे आपको मैन्युअल रूप से पुनः लोड करना होगा।
9 साल बाद UPD: ऐसा लगता है कि पहले से ही अन्य फ़ाइलों को पुनः लोड करना संभव है also_reload, dont_reloadऔर after_reload- https://github.com/sinatra/sinatra/pull/1150
require "./my-file"सफलता के बिना कर रहा हूँ
requireफ़ाइल को फिर से लोड नहीं करता है, अगर यह पहले से ही आवश्यक था। आप loadइसके बजाय।
server.rbहालांकि, मुझे अपनी बाहरी फ़ाइल को फिर से लोड करने के लिए इसे फिर से सहेजना होगा । यह अकेले मेरी बाहरी फ़ाइल की जाँच नहीं करता है, इसलिए मुझे sever.rbअपनी बाहरी फ़ाइल में परिवर्तन करने के बाद अपना हर बार सहेजना होगा । शॉटगन इस संबंध में बेहतर काम कर रही है, लेकिन यह डेटाबेस सत्रों को फिर से लोड करने के लिए भी लगता है।
configure :development do |c| require 'sinatra/reloader' c.also_reload "./lib/*.rb" c.also_reload "./controllers/*.rb" c.also_reload "./init/*.rb" end
जब आप पैसेंजर स्टैंडअलोन के साथ एप्लिकेशन चलाते हैं , तो बस एक tmp/always_restartफाइल बनाएं :
$ touch tmp/always_restart.txt
अधिक जानकारी के लिए यात्री दस्तावेज देखें ।
विंडोज पर, मैं इसके लिए अपने पुनरारंभ रत्न का उपयोग कर रहा हूं :
restart ruby my_app.rb
या, रैकअप के साथ:
restart rackup
अधिक जानकारी के लिए यहां देखें , आशा है कि आप इसे उपयोगी पाएंगे।
आप गार्ड-रैक का उपयोग कर सकते हैं। Dblock.org पर एक लेख से उठाया गया :
इसे अपने जेमफाइल में जोड़ें:
group :development do
gem "guard"
gem "guard-bundler"
gem "guard-rack"
end
फिर, Guardfileइस सामग्री के साथ अपने प्रोजेक्ट के मूल में बनाएं :
guard 'bundler' do
watch('Gemfile')
end
guard 'rack' do
watch('Gemfile.lock')
watch(%r{^(config|app|api)/.*})
end
अंत में, गार्ड चलाएं, जैसे: bundle exec guardऔर rackupहर बार फिर से लोड होगा।