मैं निम्नलिखित की तरह दो रैक कार्यों ही नाम स्थान के तहत है:रेक कार्य चर
namespace :db do
task :first_task => :environment do
server_name='myserver'
connect_to(server_name)
end
task :second_task => :environment do
server_name='myserver'
do_something_with(server_name)
end
end
जैसा कि आप देख, दोनों कार्यों एक ही नाम स्थान तहत कर रहे हैं और दोनों ही कार्यों server_name='myserver'
लगातार चर का उपयोग।
यह वास्तव में उसी नामस्थान के नीचे server_name
वैरिएबल को परिभाषित करने के लिए बदसूरत लग रहा है, मेरे पास इस चर को परिभाषित करने वाला एक स्थान कैसे हो सकता है ताकि दोनों कार्य इसका उपयोग कर सकें?
नहीं, आपको ऐसा नहीं करना चाहिए। कारण यह है कि आप नहीं जानते, जहां वह ivar जाता है। न तो मैं करता हूं। एक रेक का उपयोग एक ब्लॉक का उपयोग करके घोषित किया जाता है, न कि वर्ग, और इसलिए इवर का संदर्भ अस्पष्ट है। – meandre
@meandre इस तरह से एक आवृत्ति चर का उपयोग करने में समस्या क्या है? क्या आप दिखा सकते हैं कि यह गलत कहां जा सकता है? क्या आपके पास एक बेहतर सुझाव है? अधिक विस्तृत चर्चा के लिए http://daneharrigan.com/2010/06/rake-tasks-102/ में "कार्य में इंस्टेंस वैरिएबल" अनुभाग देखें। –
@meandre असल में, उदाहरण के रूप में परिभाषित उदाहरण चर 'Rake.application.in_namespace (नाम, और ब्लॉक)' के संदर्भ में मूल्यांकन किया गया है (https://github.com/jimweirich/rake/blob/v10.3.2 देखें /lib/rake/dsl_definition.rb#L140)। मुझे यकीन नहीं है कि आपकी चिंता क्या है। –