जवाबों:
सिनात्रा 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
हर बार फिर से लोड होगा।