मैं रूबी वातावरण में रूबी फ़ाइल कैसे चलाऊँ?


106

मैं एक रूले फ़ाइल को रेल के वातावरण के संदर्भ में चलाना चाहता हूं। रेल धावक लगभग वही करता है जो मैं करना चाहता हूं, लेकिन मैं इसे केवल फ़ाइल नाम और तर्क देना चाहता हूं। मुझे पूरा यकीन है कि यह संभव है क्योंकि मैंने इसे पहले किया है। क्या कोई मुझे याद दिला सकता है कि यह कैसे करना है?

जवाबों:



36

बस environment.rbअपनी स्क्रिप्ट में आवश्यकता है। यदि आपकी स्क्रिप्ट scriptआपके रेल एप्लिकेशन की निर्देशिका में स्थित है

require File.expand_path('../../config/environment', __FILE__)

RAILS_ENVस्क्रिप्ट चलाते समय पर्यावरण चर सेट करके आप उपयोग किए गए पर्यावरण (विकास / परीक्षण / उत्पादन) को नियंत्रित कर सकते हैं ।

RAILS_ENV=production ruby script/test.rb

अगर मैं ऊपर कोड चलाऊंगा तो यह "होम / एप्स / कॉन्फिग / एनवायरनमेंट" देगा। क्या होगा अगर मेरे पास एक ही डायरेक्टरी पर 2 रेल ऐप हैं। कौन सा माहौल लगेगा? मैं अपने स्थानीय बॉक्स में इस समस्या का सामना कर रहा हूँ। कृपया सुझाव दें
विजय साली

@VijaySali मुझे लगता है कि आप app/scriptनिर्देशिका से अपनी स्क्रिप्ट चला रहे हैं । पर्यावरण फ़ाइल को व्यक्तिगत ऐप से लिया जाएगा।
५/११

yup धन्यवाद यह मेरे लिए काम किया है, मैंने ENV ['RAILS_ENV'] को भी जोड़ा
विजय साली

26

रनर गैर-अंतःक्रियात्मक रूप से रेल के संदर्भ में रूबी कोड चलाता है।

से rails runnerआदेश:

Usage: runner [options] ('Some.ruby(code)' or a filename)

    -e, --environment=name           Specifies the environment for the runner to operate under (test/development/production).
                                     Default: development

    -h, --help                       Show this help message.

आप अपनी स्क्रिप्ट के लिए रनर लाइन का उपयोग इस तरह से कर सकते हैं:

-------------------------------------------------------------
#!/usr/bin/env /Users/me/rails_project/script/rails runner

Product.all.each { |p| p.price *= 2 ; p.save! }
-------------------------------------------------------------

1
जब मैं "/ उपयोगकर्ता / मुझे / rails_project / script / रेल" निर्दिष्ट करता हूं तो यह केवल तभी काम करता है, न कि केवल "रेल"? TIA
iphone007

क्या आपके अन्य रेल कमांड को भी पूर्ण पथ सूचीबद्ध करने की आवश्यकता है? (यानी रेल सर्वर)
कॉलन

@ iphone007 इस बात पर निर्भर हो सकता है कि आप स्क्रिप्ट कहां से चला रहे हैं।
डेविड मोल्स

7

यह एक पुराना सवाल है, लेकिन मेरी राय में मैं अक्सर इसे एक रेक कार्य बनाने में मददगार पाता हूं ... और यह वास्तव में बहुत आसान है।

में lib/tasks/example.rake:

namespace :example do

desc "Sample description you'd see if you ran: 'rake --tasks' in the terminal"
task create_user: :environment do
  User.create! first_name: "Foo", last_name: "Bar"
end

और फिर टर्मिनल रन में:

rake example:create_user

स्थानीय रूप से यह आपके विकास डेटाबेस के संदर्भ में चलाया जाएगा, और यदि हर्को पर चलाया जाता है तो इसे आपके उत्पादन डेटाबेस से जुड़ा हुआ है। मुझे यह विशेष रूप से माइग्रेशन या संशोधित तालिकाओं की सहायता के लिए उपयोगी लगता है।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.