ऐसी फ़ाइल लोड नहीं कर सकते - बंडल / सेटअप (LoadError)


128

मैं रूबी 2.0 के साथ रेल 4 एप्लिकेशन सेट कर रहा हूं, लेकिन मुझे "वेब एप्लिकेशन शुरू नहीं किया जा सका" और यह ट्रेस मिल रहा है:

cannot load such file -- bundler/setup (LoadError)
  /usr/local/lib/ruby/site_ruby/2.0.0/rubygems/core_ext/kernel_require.rb:53:in `require'
  /usr/local/lib/ruby/site_ruby/2.0.0/rubygems/core_ext/kernel_require.rb:53:in `require'
  /usr/lib/ruby/gems/1.8/gems/passenger-4.0.19/lib/phusion_passenger/loader_shared_helpers.rb:212:in `run_load_path_setup_code'
  /usr/lib/ruby/gems/1.8/gems/passenger-4.0.19/helper-scripts/rack-preloader.rb:96:in `preload_app'
  /usr/lib/ruby/gems/1.8/gems/passenger-4.0.19/helper-scripts/rack-preloader.rb:150:in `<module:App>'
  /usr/lib/ruby/gems/1.8/gems/passenger-4.0.19/helper-scripts/rack-preloader.rb:29:in `<module:PhusionPassenger>'
  /usr/lib/ruby/gems/1.8/gems/passenger-4.0.19/helper-scripts/rack-preloader.rb:28:in `<main>'

मेरा Apache2.conf है:

LoadModule passenger_module /usr/lib/ruby/gems/1.8/gems/passenger-4.0.19/buildout/apache2/mod_passenger.so
   PassengerRoot /usr/lib/ruby/gems/1.8/gems/passenger-4.0.19
   PassengerDefaultRuby /usr/local/bin/ruby

bundle -v है:

Bundler version 1.3.5

ruby -v है:

ruby 2.0.0p247 (2013-06-27 revision 41674) [x86_64-linux]

gem env है:

RubyGems Environment:
  - RUBYGEMS VERSION: 2.1.5
  - RUBY VERSION: 2.0.0 (2013-06-27 patchlevel 247) [x86_64-linux]
  - INSTALLATION DIRECTORY: /usr/lib/ruby/gems/1.8
  - RUBY EXECUTABLE: /usr/local/bin/ruby
  - EXECUTABLE DIRECTORY: /usr/lib/ruby/gems/1.8/bin
  - SPEC CACHE DIRECTORY: /root/.gem/specs
  - RUBYGEMS PLATFORMS:
    - ruby
    - x86_64-linux
  - GEM PATHS:
     - /usr/lib/ruby/gems/1.8
  - GEM CONFIGURATION:
     - :update_sources => true
     - :verbose => true
     - :backtrace => false
     - :bulk_threshold => 1000
  - REMOTE SOURCES:
     - https://rubygems.org/
  - SHELL PATH:
     - /root/.gems/bin
     - /usr/lib/ruby/gems/1.8/bin/
     - /usr/local/bin
     - /usr/bin
     - /bin
     - /usr/bin/X11
     - /usr/games
     - /usr/sbin
     - /sbin

echo $GEM_PATH है:

/usr/lib/ruby/gems/1.8:/usr/lib/ruby/gems/1.8

नहीं करना चाहिए GEM_PATH होना चाहिए/usr/lib/ruby/gems/2.0 ?

Apache2.conf में वर्चुअल होस्ट के अंदर मैंने जोड़ा:

SetEnv GEM_HOME /usr/lib/ruby/gems/1.8

और अब यह काम कर रहा है।

क्या इसे ठीक करने का सही तरीका है?

जवाबों:


49

यह हो सकता है कि 2.0 की स्थापना से पहले आपके सिस्टम पर पिछले रूबी एनवी स्थापित किया गया था? यह एक मौजूदा GEM_PATH हो सकता है जो कि / 1.8 निर्देशिका की ओर ले जाता है जिसे संस्करण 2.0 की स्थापना केवल रखा गया है।

आप जिस समस्या की संभावना रखते हैं, उस समय, पैसेंजर / अपाचे / 2.0 निर्देशिका में देख रहे थे जब वास्तव में रत्न / 1.8 निर्देशिका में थे। आपके स्पष्ट रूप से / 1.8 निर्देशिका का उपयोग करने के लिए अपाचे कहना इस प्रकार समस्या को ठीक करने के लिए समझ में आता है।

SetEnv GEM_HOME /usr/lib/ruby/gems/1.8

आप रूबी संस्करण प्रबंधक का उपयोग करने का भी प्रयास कर सकते हैं कई रूबी एनवी को संभालने की ।

कुछ चीजें जो मुझे Google में मिलीं:


202

मेरे पास लगभग एक ही त्रुटि थी, और बस चलाकर इसे पूरी तरह से ठीक करने में सक्षम था:

gem install bundler

यह संभव है कि आपका बंडलर इंस्टॉलेशन भ्रष्ट या गायब है - मेरे मामले में यही हुआ है। ध्यान दें कि यदि उपरोक्त विफल रहता है तो आप कोशिश कर सकते हैं:

sudo gem install bundler

... लेकिन आम तौर पर आप इसे सुडो के बिना भी कर सकते हैं।


2
यह में था! प्रश्न - क्या sudoवास्तव में neccessary है? मैंने इस्तेमाल किया sudoलेकिन अब सोच रहा हूं कि अगर मैं नहीं होता तो क्या होता।
पीट

2
यदि आप सिस्टम डिफ़ॉल्ट की तुलना में रूबी के किसी भिन्न संस्करण का उपयोग कर रहे हैं, तो आपको उपयोग करने की आवश्यकता नहीं है sudo! मणि sudo gem ....का defaultसंस्करण स्थापित करेगा , और (मेरे मामले में, Ubuntu 14.04) sudorvm नहीं चला सकता।
फारफ्रोमुनिक

1
मेरे macOS सिस्टम पर, मुझे sudoसिस्टम डिफ़ॉल्ट रूबी की आवश्यकता थी, लेकिन इसे rvm के साथ स्थापित किए गए रूबी के किसी भी संस्करण के लिए आवश्यक नहीं था।
बेन विजेंस

1
हाल ही में विंडोज अपडेट के बाद, बस यह कहने के लिए कि लिनक्स के लिए विंडोज सबसिस्टम का उपयोग करने के लिए यह एक समाधान था। किसी कारण से अपडेट ने मेरे आरवीएम रूबी को उड़ा दिया।
बेन फुल्टन

1
नमस्ते, मैं एक ही समस्या के साथ ubuntu gem 2.7.6और ruby 2.5.0p0क्या करना है का उपयोग कर के रूप में समस्या है?
theCrazyProfector

28

आप सबसे अधिक एक से अधिक रूबी स्थापित होने की संभावना है।

यदि आप आरवीएम का उपयोग कर रहे हैं, तो आपको संभवतः चलाने की आवश्यकता है:

rvm use system

रूबी के संस्करण का उपयोग करने के लिए सेट करें।

Http://rvm.io/rubies/default देखें

ruby -v

आपको वह संस्करण बताएगा जो आप वर्तमान में उपयोग कर रहे हैं।


25

आप चलाने की कोशिश कर सकते हैं:

bundle exec rake rails:update:bin

रेल्स 5 में उल्लिखित @ दिनेश के रूप में:

rails app:update:bin

10

मेरे मामले में, यात्री स्थापित करने के बाद अपाचे कॉन्फिगर फ़ाइल में संलग्न लाइनें इस प्रकार थीं:

LoadModule passenger_module /usr/lib/ruby/gems/1.8/gems/passenger-.0.24/buildout/apache2/mod_passenger.so 
PassengerRoot /usr/lib/ruby/gems/1.8/gems/passenger-4.0.24 
PassengerDefaultRuby /usr/bin/ruby1.8

लेकिन ऐप के लिए रूबी 2.0.0 की आवश्यकता है, इसलिए मुझे इसमें थोड़ी देर लगी, लेकिन आखिरकार, एप के लिए अपाचे वर्चुअल होस्ट कॉन्फिग फाइल के भीतर, नीचे दिए गए 'पैसेंजररुबी' का उपयोग करके एक अलग पथ को निर्दिष्ट करने के बाद त्रुटि को हल किया गया:

...
VirtualHost *:80>
  ServerName www.yourhost.com

 **PassengerRuby /home/user/.rvm/gems/ruby-2.0.0-p247**
  # !!! Be sure to point DocumentRoot to 'public'!
  DocumentRoot /somewhere/public    
  <Directory /somewhere/public>
     # This relaxes Apache security settings.
     AllowOverride all
     # MultiViews must be turned off.
     Options -MultiViews
  </Directory>
</VirtualHost...

मेरे साथ भी यही हुआ था। मेरे मामले PassengerDefaultRubyमें माणिक की एक पुरानी स्थापना का जिक्र था।
वसीम

8

मुझे यह त्रुटि एक नए रेल एप्लिकेशन में बंडल के साथ सही ढंग से स्थापित है। जेमफाइल में वसंत रत्न की टिप्पणी ने समस्या का समाधान किया।


4
यह मेरे लिए था, लेकिन gem install springबाहर टिप्पणी करने के बजाय।
जोकेनबर्ग

3

मैं एक ही मुद्दे में भाग गया, लेकिन मुझे लगता है कि यह springकुछ रत्नों और विन्यासों के कैशिंग के कारण था । मैंने दौड़ कर इसे ठीक कियाgem pristine --all

यह पुनर्स्थापना रत्न को कैश कैश में स्थित फाइलों से प्राचीन स्थिति में स्थापित करता है।

या आप सिर्फ अपने मणि के लिए कोशिश कर सकते हैं जैसे

gem pristine your_gem_name

1

यह मेरे लिए प्रोडक्शन के माहौल में हो रहा था।

rm /vendor/bundle

फिर bundle install --deployment

इस मुद्दे को हल किया।


1

अन्य संभावित स्थिति: आपके पास अपने सर्वर वातावरण में परिभाषित कई उपयोगकर्ता हैं। उस मामले में, चल रहा है

passenger-config --ruby-command

आपको nginx/sites-enabled/relevant_applicationअपने उपयोग के मामले के साथ अपनी फ़ाइल को निर्दिष्ट करने के लिए आवश्यक आदेश देगा , उदाहरण:

passenger-config was invoked through the following Ruby interpreter:
Command: /home/other_user/.rbenv/versions/2.4.5/bin/ruby
Version: ruby 2.4.5p335 (2018-10-18 revision 65137) [x86_64-linux]
To use in Apache: PassengerRuby /home/other_user/.rbenv/versions/2.4.5/bin/ruby
To use in Nginx : passenger_ruby /home/other_user/.rbenv/versions/2.4.5/bin/ruby
To use with Standalone: /home/other_user/.rbenv/versions/2.4.5/bin/ruby /usr/bin/passenger start

1

मैं एक ही मुद्दा था और बिना किसी भाग्य के सभी उत्तरों की कोशिश की।

जिन चरणों को मैंने पुन: उत्पन्न करने के लिए किया था:

  1. rvm instal 2.1.10
  2. rvm gemset create my_gemset
  3. rvm use 2.1.10@my_gemset
  4. bundle install

हालांकि bundle installस्थापित रेल, लेकिन मैं अभी भी मिला है cannot load such file -- bundler/setup (LoadError)

अंत में gem install rails -v 4.2इसे ठीक किया जा रहा है


1

Bundler संस्करण समस्या का कारण हो सकता है।

कृपया अन्य संस्करण संख्या के साथ बंडल स्थापित करें।

उदाहरण के लिए,

मणि स्थापित बंडल -v 1.0.10


मेरे मामले में यह त्रुटि बंडल v2 को स्थापित करने के बाद होती है । मैं इसे हल करता हूं gem uninstall -a bundler; gem install bundler -v '<2.0'
सर्ग

0

मेरे पास ऐसा था क्योंकि कुछ बुरा मेरे अंदर था vendor/bundle। अपाचे के साथ कुछ नहीं करना है, बस स्थानीय देव एनवी में।

ठीक करने के लिए, मैंने हटा दिया vendor\bundle, और मेरे संदर्भ को भी हटा दिया.bundle/config ताकि यह दोबारा इस्तेमाल न हो।

फिर, मैंने फिर से बंडल किया (जो तब के GEM_HOMEबजाय स्थापित हो vendor/bundleगया और समस्या दूर हो गई।


0

नोट: मेरी होस्टिंग कंपनी Site5.com है और मेरे पास एक प्रबंधित VPS है।

मैंने GEM_HOME और GEM_PATH दोनों के लिए env वैरिएबल को अपनी public_html निर्देशिका (रेल एप्लिकेशन में सार्वजनिक निर्देशिका के लिए एक उपनाम) में .htaccess फ़ाइल में जोड़ा।

मेजबान टीम की ओर से कुछ बदला जाना चाहिए था, इससे पहले उन्हें जरूरत नहीं थी। यह त्रुटि यात्री सर्वर को पुनः आरंभ करने के लिए पुनरारंभ। Txt फ़ाइल को छूने के बाद मिली।

GEM_PATH द्वारा प्राप्त करें:

गूंज $ GEM_PATH

द्वारा GEM_HOME प्राप्त करें:

मणि env

 RubyGems Environment:
   - RUBYGEMS VERSION: 2.0.14
   - RUBY VERSION: 2.0.0 (2013-11-22 patchlevel 353) [x86_64-linux]
   - INSTALLATION DIRECTORY: /home/username/ruby/gems
   - RUBY EXECUTABLE: /usr/local/ruby20/bin/ruby
   - EXECUTABLE DIRECTORY: /home/username/ruby/gems/bin
   - RUBYGEMS PLATFORMS:
     - ruby
     - x86_64-linux
   - GEM PATHS:
      - /home/username/ruby/gems
      - /usr/local/ruby2.0/lib64/ruby/gems/
   - GEM CONFIGURATION:
      - :update_sources => true
      - :verbose => true
      - :backtrace => false
      - :bulk_threshold => 1000
      - "gem" => "--remote --gen-rdoc --run-tests"
      **- "gemhome" => "/home/username/ruby/gems"**
      - "gempath" => ["/home/username/ruby/gems", "/usr/local/ruby2.0/lib64/ruby/gems/"]
      - "rdoc" => "--inline-source --line-numbers"
   - REMOTE SOURCES:
      - https://rubygems.org/

निम्नलिखित लाइनों के साथ अद्यतन .htaccess फ़ाइल:

SetEnv GEM_HOME /usr/local/ruby2.0/lib64/ruby/gems/
SetEnv GEM_PATH /home/username/ruby/gems:/usr/local/ruby20/lib64/ruby/gems/:/home/username/ruby/gems:/usr/

0

मेरे लिए समस्या पैसेंजर के साथ आरवीएम रूबी को जोड़ रही थी। इसलिए मुझे आरवीएम रूबी रैपर को पैसेंजर कॉन्फिगर फाइल में इंटीग्रेट करने की जरूरत थी।

मुझे कमांड के साथ आरवीएम माणिक आवरण पथ का पता चला:

passenger-config --ruby-command

मैंने परिणाम से रास्ता लिया और एक यात्री विन्यास में प्रवेश किया nginx/passenger.conf:

passenger_root /usr/lib/ruby/vendor_ruby/phusion_passenger/locations.ini;
passenger_ruby /usr/local/rvm/gems/ruby-2.3.1/wrappers/ruby;

0

मैंने परीक्षण रेल परियोजना बनाकर उस समस्या को ठीक कर लिया है और सभी रत्नों को स्थापित कर दिया है और फिर मैंने अपने वर्तमान Gemfile.lock को परीक्षण के साथ बदल दिया है और सभी चीजें ठीक काम करती हैं।

मुझे लगता है कि bundlerहोस्टिंग के साथ संस्करणों से यह समस्या है , इसलिए कृपया सुनिश्चित करें कि आपके प्रोजेक्ट के साथ होस्टिंग बंडलर एक ही संस्करण है।


0

मेरी स्थिति में यह अनुमति की बात थी:

 sudo chmod -R +777 <your_folder_path>

-1: फाइलों या निर्देशिकाओं पर कभी भी 777 मत डालें। यदि "स्वामी", "समूह" और "अन्य" के बीच एक विभाजन है, तो ऐसा इसलिए है क्योंकि यह एक सुरक्षा मामला है।
फ्लोरियन डॉयन

0

माणिक संस्करण का संस्करण जो फ़्यूज़न यात्री का उपयोग किया गया था, आपके रेल एप्लिकेशन के साथ भिन्न होता है।

<IfModule mod_passenger.c>
  PassengerRoot /usr/local/rbenv/versions/2.5.3/lib/ruby/gems/2.5.0/gems/passenger-6.0.2
  PassengerDefaultRuby /usr/local/rbenv/versions/2.5.3/bin/ruby
</IfModule>

सुनिश्चित करें कि httpd config पर संस्करण रेल एप्लिकेशन के साथ समान है।

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