मैं भी इस के साथ संघर्ष कर रहा था। जिस तरह से मैंने खोज की है वह यहां है।
आप "अंदर" एक वर्ग है कि सिनात्रा :: बेस (जैसे सिनात्रा :: आवेदन, जो बेस से विरासत के रूप में) से विरासत development?
विधि है, जो base.rb में परिभाषित किया गया है का उपयोग करने में सक्षम होना करने की आवश्यकता है।
क्लासिक सिनात्रा ऐप में आप पहले ही सिनात्रा :: बेस से विरासत में आने वाले वर्ग के अंदर "कोडिंग" कर रहे हैं। तो development?
बस "कहीं भी" काम करेगा।
मॉड्यूलर सिनात्रा में development?
केवल सिनात्रा में काम करेंगे :: जैसे बेस उप-वर्गों,:
require 'sinatra/base'
# Placing
# require 'dm-sqlite-adapter' if development?
# here will not work.
class ApplicationController < Sinatra::Base
require 'dm-sqlite-adapter' if development? # But here it works
...
end
# Placing
# require 'dm-sqlite-adapter' if development?`
# AFTER the above class will still not work
class SomethingElse
# nor will `development?` work here, since it is called inside
# a class without Sinatra::Base inheritance
...
end
तो बुनियादी तौर पर आप एक ApplicationController वर्ग कि सिनात्रा :: बेस से विरासत और अंदर यहाँ की जाँच का उपयोग कर सकते development?
के लिए। एक ही उप-वर्गों है कि आपके ApplicationController वर्ग से विरासत के लिए चला जाता है:
class UserController < ApplicationController
require 'dotenv' if development?
...
end
मॉड्यूलर सिनात्रा के लिए, में (मुख्य: ऑब्जेक्ट) कोड पाठ "बाहर" सिनात्रा :: बेस उप-वर्गों, आप Arup's पालन करने की आवश्यकता निर्देश:
if Sinatra::Base.environment == :development
require 'awesome_print'
require 'dotenv'
Dotenv.load
...
end
क्या होता है यदि आप इसे प्रतीक के रूप में उपयोग करते हैं (कोलन चरित्र के साथ) "xyz" की आवश्यकता होती है यदि: विकास? –
इसे फिक्स्ड। बहुत धन्यवाद। यदि आप इसे एक उत्तर के रूप में रखना चाहते हैं, तो मुझे इसे सही के रूप में स्वीकार करने में खुशी होगी। प्रतीक और गैर-प्रतीक वाक्यविन्यास के बीच क्या अंतर है? मुझे कैसे पता चलेगा कि किस का उपयोग करना है? –
@EmanueleFeliziani जो एक फिक्स नहीं है ... यदि: any_symbol_whatever' हमेशा सत्य वापस आ जाएगा, क्योंकि प्रतीक 'शून्य' या 'झूठा' नहीं है। – matt