অবিশ্রুত ধ্রুবক অ্যাক্টিভসপোর্ট :: নির্ভরতা :: নিঃশব্দ (নামের ত্রুটি)


238

আমি যখন রেল অন রেল প্রকল্প তৈরি করতে চাই, আমি নীচে বার্তাটি পাই।

/usr/lib/ruby/gems/1.8/gems/activesupport-2.3.8/lib/active_support/dependencies.rb:55: uninitialized constant ActiveSupport::Dependencies::Mutex (NameError)
    from /usr/local/lib/site_ruby/1.8/rubygems/custom_require.rb:36:in `gem_original_require'
    from /usr/local/lib/site_ruby/1.8/rubygems/custom_require.rb:36:in `require'
    from /usr/lib/ruby/gems/1.8/gems/activesupport-2.3.8/lib/active_support.rb:57
    from /usr/local/lib/site_ruby/1.8/rubygems/custom_require.rb:36:in `gem_original_require'
    from /usr/local/lib/site_ruby/1.8/rubygems/custom_require.rb:36:in `require'
    from /usr/lib/ruby/gems/1.8/gems/rails-2.3.8/lib/rails_generator.rb:31
    from /usr/local/lib/site_ruby/1.8/rubygems/custom_require.rb:36:in `gem_original_require'
    from /usr/local/lib/site_ruby/1.8/rubygems/custom_require.rb:36:in `require'
    from /usr/lib/ruby/gems/1.8/gems/rails-2.3.8/bin/rails:15
    from /usr/bin/rails:19:in `load'
    from /usr/bin/rails:19

কী ভুল হয়েছে? আমি কীভাবে এটি ঠিক করব?


আপনি কি আউটপুট পোস্ট করতে পারেন gem --version?
অ্যান্ড্রু মার্শাল

উত্তর:


137

এটি রেল ২.৩.৮ এবং রুবিগেমসের সাম্প্রতিক সংস্করণগুলির মধ্যে একটি অসঙ্গতি। সর্বশেষতম 2.3 সংস্করণে আপগ্রেড করুন (আজ অবধি 2.3.11)।


211

আপনি যদি রেল অন রেল ২.৩.১১ এ আপগ্রেড করতে না পারেন (এবং ডগলাসারের উত্তরটি প্রসারিত করতে পারেন) তবে threadঅবশ্যই শীর্ষে থাকা আবশ্যক boot.rb। উদাহরণ স্বরূপ:

require 'thread'

# Don't change this file!
# Configure your app in config/environment.rb and config/environments/*.rb
...

28
এটি boot.rbনিজের শীর্ষে যুক্ত করা আরও সহজ ।
নাথানভদা

12
এটিকে বুট.আরবিতে যুক্ত করা যথাযথ উত্তর হওয়া উচিত।
রেডিওস্পিল

1
আমি কীভাবে প্রয়োজনীয় থ্রেড যুক্ত করব? কোন ফাইল? মানে, কোনও রেলের প্রকল্প তৈরি হয়নি। এটি কি মূল পরিবর্তন?
alfizqu

@ ফিজিকু, ফাইলটি হ'ল<RUBYDIR>/lib/ruby/gems/<VERSION>/gems/rails-<VERSION>/environments/boot.rb
জেলিকেলকিট

আমি এটিকে কনফিগার / বুট.আরবিতে যুক্ত করেছি তবে এটি আমার পক্ষে কার্যকর হয়নি। আমাকে কোথায় যুক্ত করতে হবে?
অমৃত ধুনগনা

158

আমি রুবিগেমসকে ১.৩.৩ এ ডাউনগ্রেড করে এটি ঠিক করতে সক্ষম হয়েছি, যেহেতু এটি রুবিগেমস ১.6.০+ এবং রেলগুলির সাথে ঘটে << 2.3.11:

gem update --system 1.5.3

আপনি যদি এর আগে কোনও পূর্ববর্তী সংস্করণে ডাউনগ্রেড হন এবং 1.5.3 এ আপডেট করতে চান, এটি চালানোর চেষ্টা করার সময় আপনি নিম্নলিখিতটি পেতে পারেন:

Updating RubyGems
ERROR:  While executing gem ... (RuntimeError)
    No gem names are allowed with the --system option

যদি আপনি সেই ত্রুটিটি পান তবে আপডেট করুন, যাতে এটি আপনাকে সংস্করণ নির্দিষ্ট করতে দেয় এবং তারপরে আবার ডাউনগ্রেড করে:

gem update --system
gem update --system 1.5.3

2
রেল 3 + রুবিজেমস ১.s+ থাকার পরে একটি ২.৩.৫ রেল অ্যাপ্লিকেশন চালানো নিয়ে সমস্যা হয়েছে। এটি সমাধান করেছে, ধন্যবাদ।
আরআর

4
এটি আমার পক্ষে কাজ করছে না ... undefined local variable or method version_requirements for #<Rails::GemDependency:0x2b001603fe30>
রায় 301

ধন্যবাদ! আমার জন্যও কাজ করুন:]
mr.pppoe

4
অ্যারন আপনি কমান্ডের সামনে সুডো যুক্ত করার জন্য আমার উত্তর সম্পাদনা করেছেন, তবে আফাইক সুডো সর্বদা উপযুক্ত নয় (যেমন আরভিএম ব্যবহার করার সময় ইত্যাদি)। লোকেরা এটি প্রয়োজন হিসাবে যুক্ত করতে পারে।
গ্যারি এস ওয়েভার

5
বা আপনি যদি আরভিএম ব্যবহার করছেন (পুরানো কোড বেসগুলিকে সমর্থন করার প্রয়োজনে আদর্শ!): আরভিএম রুবিজেমস 1.5.3
টারডেট

35

আপনি সম্ভবত আপনার অ্যাপ্লিকেশনটিতে 'থ্রেড' প্রয়োজনের মাধ্যমে এই সমস্যাটি পেতে পারেন:

require 'thread'

রুবিগেমস অনুসারে 1.6.0 রিলিজ নোট


24

আপনি যদি নিজের সংস্করণটিকে একইরকম রাখতে চান তবে রেলগুলি হবে ২.৩.৮ এবং মণির সংস্করণ সর্বশেষ হবে। আপনি এই দ্রষ্টব্যটি Rails2.x সহ সর্বশেষ রত্নটি ব্যবহার করতে পারেন । এতে বুট.আরবি ফাইল এবং এনভায়রনমেন্ট.আরবি ফাইলের কিছু পরিবর্তন রয়েছে।

require 'thread'বুট.আরবি ফাইলটি শীর্ষে রয়েছে।

এবং পরিবেশে.rb ফাইলে নীচের কোডটি আরম্ভকারী ব্লকের উপরে যুক্ত করুন।

if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.3.7')
 module Rails
   class GemDependency
     def requirement
       r = super
       (r == Gem::Requirement.default) ? nil : r
     end
   end
 end
end

4
ধন্যবাদ, এটিই আমার জন্য একমাত্র সমাধান।
ক্রিস্টোফার পিক্সলে

11

রেল 3> এর সাথে কাজ করার পরে আমি যখন পুরানো রেলগুলি ২.৩.৫ প্রকল্প শুরু করার চেষ্টা করি তখন আমি অনেক সময় এই সমস্যার মুখোমুখি হয়েছি। সমস্যাটি সমাধান করার জন্য আমার অবশ্যই সংস্করণ ১.৪.২ এ একটি রুবিজেমস আপডেট করতে হবে, এটি হ'ল:

sudo gem update --system 1.4.2

এটি আমাদের জন্য সেরা সমাধান, কারণ রেল সংস্করণ পরিবর্তন হতে পারে না, এটি আপডেট করার সাথে খুব বেশি জড়িত, তবে রত্ন সংস্করণটি পরিবর্তন করা খুব সুন্দর এবং সহজ!
ইয়ান ভান

6

আপনি যদি রেডিয়েন্ট সিএমএস ব্যবহার করেন তবে কেবল যুক্ত করুন

require 'thread'

শীর্ষে config/boot.rb

(হারুন এবং নাথনভদার প্রতিক্রিয়াগুলির প্রতি কুডোস))


3

যেমনটি বলা হয়েছে যেমন রুবিগেমস ১.6.০ ব্যবহার করে রুবে অন রইল সংস্করণটি সংস্করণ ৩ এর চেয়ে আগের সংস্করণে 3.

কোনও সন্দেহ নেই যে রুবেলের অনুলিপিটিকে নতুন 2.3.X সংস্করণে আপগ্রেড করাও এই সমস্যাটিকে সমাধান করতে পারে। যাইহোক, এই সমস্যা প্রতিরোধ আপনি চলমান Rake পাগল নেভিগেশন unvendor রুবি এবং এটি আপগ্রেড করতে পারবেন।

পরিবেশের শীর্ষে 'থ্রেড' যুক্ত করা আমার জন্য সমস্যাটি সমাধান করে নি। 'উইন্ডোয়ার / রেন্টস / এ্যাকটিভসপোর্টপোর্ট / লাইব / এ্যাকটিভ_সপোর্ট.আরবিতে' থ্রেড 'যুক্ত করা সমস্যার সমাধান করে did


3

আপনার রুবি অন রেল সংস্করণকে v3.0.5 এ আপডেট করার চেষ্টা করুন:

gem install rails --version 3.0.5

বা v2.3.11:

gem install rails --version 2.3.11

যদি এটি কোনও নতুন প্রকল্প না হয় তবে আপনাকে সেই অনুযায়ী আপনার অ্যাপ্লিকেশনটি আপগ্রেড করতে হবে। যদি এটি একটি নতুন প্রকল্প হয় তবে কেবল আপনি যে ডিরেক্টরিটি তৈরি করেছেন সেটি মুছুন এবং আবার একটি নতুন প্রকল্প তৈরি করুন।



-1

আমি অন্য ঘুম-বঞ্চিত প্রাণীদের জন্য আমার সমাধানটি সেখানে পোস্ট করছি:

আপনি যদি আরভিএম ব্যবহার করে থাকেন তবে সঠিক রুবি সংস্করণ এবং রত্নটি ব্যবহার করে আপনি সঠিক ফোল্ডারে রয়েছেন তা ডাবল-পরীক্ষা করে দেখুন। আমার কাছে টার্মিনাল ট্যাবগুলির একটি অ্যারে খোলা ছিল এবং তাদের মধ্যে একটি আলাদা ডিরেক্টরিতে ছিল। "রেলস কনসোল" টাইপ করলে ত্রুটি তৈরি হয়েছিল কারণ আমার ডিফল্ট রেল ডিস্ট্রো ২.৩.x.

আমি আমার পক্ষ থেকে ত্রুটিটি লক্ষ্য করেছি, সঠিক ডিরেক্টরিতে সিডি করব এবং আমার .rvmrc ফাইলটি বাকিটি করেছিল।

আরভিএম গিটের মতো নয় । গিট-এ, একটি শেলের শাখা পরিবর্তন করা সর্বত্র এটি পরিবর্তন করে। এটি আক্ষরিক অর্থে প্রশ্নযুক্ত ফাইলগুলি পুনরায় লিখছে। অন্যদিকে আরভিএম কেবল শেল ভেরিয়েবল সেট করছে এবং আপনার খোলার প্রতিটি নতুন শেলের জন্য অবশ্যই সেট করতে হবে।

আপনি যদি .rvmrc এর সাথে পরিচিত না হন তবে আপনি সেই নামের সাথে কোনও ডিরেক্টরি কোনও ডিরেক্টরিতে রাখতে পারেন এবং আপনি যখনই ডিরেক্টরিতে পরিবর্তন করেন তখন rvm এটিকে বেছে নেবে এবং এতে বর্ণিত সংস্করণ / রত্নটি ব্যবহার করবে। এখানে একটি নমুনা .rvmrc ফাইল:

rvm use 1.9.2@turtles

জেমসেট "কচ্ছপ" ব্যবহার করে এটি আপনার আরভিএম সংগ্রহে রুবি ১.৯.২ এর সর্বশেষ সংস্করণে স্যুইচ করবে। এখন আপনি টার্মিনালে একশত ট্যাব খুলতে পারেন (যেমনটি আমি শেষ করি) এবং এটি যে রুবি সংস্করণটি নির্দেশ করছে সে সম্পর্কে কখনই চিন্তা করবেন না।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.