2010-07-06 17 views
25

Tôi đang cố gắng chạy Rails 3 beta 4 & Ruby 1.9.2rc trên Ubuntu 10.04. Nó hoạt động ban đầu, nhưng sau khi cài đặt gói/gói đầu tiên của tôi, bây giờ tôi nhận được các lỗi sau trong tất cả các dự án đường ray. Ngay cả một 'rails new testproject' cơ bản theo sau bởi một cào sẽ trả về các thông báo lỗi.Rails 3.0 & Ruby 1.9.2rc: Lệnh Rake trả về 'hằng số đã được khởi tạo' và mức độ ngăn xếp quá sâu. Mọi ý tưởng

Tóm lại, tôi bị bối rối. Bất kỳ sự trợ giúp nào về những gì có thể gây ra điều này sẽ rất được đánh giá cao.

Điều duy nhất tôi nhận thấy - có thể có hoặc không liên quan - là thư mục trong tệp ~/.bundle là ruby ​​/ 1.9.1. 1.9.1 không được cài đặt trên máy của tôi - chỉ 1.9.2rc. ruby -v mang lại 1.9.2

(in /home/john/Websites/sandbox/testerino) 
/home/john/.bundle/ruby/1.9.1/gems/rake-0.8.7/lib/rake.rb:32: warning: already initialized constant RAKEVERSION 
/home/john/.bundle/ruby/1.9.1/gems/rake-0.8.7/lib/rake/alt_system.rb:32: warning: already initialized constant WINDOWS 
WARNING: Possible conflict with Rake extension: String#ext already exists 
WARNING: Possible conflict with Rake extension: String#pathmap already exists 
/home/john/.bundle/ruby/1.9.1/gems/rake-0.8.7/lib/rake.rb:404: warning: already initialized constant EMPTY_TASK_ARGS 
/home/john/.bundle/ruby/1.9.1/gems/rake-0.8.7/lib/rake.rb:452: warning: already initialized constant EMPTY 
/home/john/.bundle/ruby/1.9.1/gems/rake-0.8.7/lib/rake.rb:960: warning: already initialized constant RUBY_EXT 
/home/john/.bundle/ruby/1.9.1/gems/rake-0.8.7/lib/rake.rb:964: warning: already initialized constant RUBY 
/home/john/.bundle/ruby/1.9.1/gems/rake-0.8.7/lib/rake.rb:1033: warning: already initialized constant LN_SUPPORTED 
/home/john/.bundle/ruby/1.9.1/gems/rake-0.8.7/lib/rake.rb:1242: warning: already initialized constant ARRAY_METHODS 
/home/john/.bundle/ruby/1.9.1/gems/rake-0.8.7/lib/rake.rb:1245: warning: already initialized constant MUST_DEFINE 
/home/john/.bundle/ruby/1.9.1/gems/rake-0.8.7/lib/rake.rb:1249: warning: already initialized constant MUST_NOT_DEFINE 
/home/john/.bundle/ruby/1.9.1/gems/rake-0.8.7/lib/rake.rb:1253: warning: already initialized constant SPECIAL_RETURN 
/home/john/.bundle/ruby/1.9.1/gems/rake-0.8.7/lib/rake.rb:1259: warning: already initialized constant DELEGATING_METHODS 
/home/john/.bundle/ruby/1.9.1/gems/rake-0.8.7/lib/rake.rb:1569: warning: already initialized constant DEFAULT_IGNORE_PATTERNS 
/home/john/.bundle/ruby/1.9.1/gems/rake-0.8.7/lib/rake.rb:1575: warning: already initialized constant DEFAULT_IGNORE_PROCS 
/home/john/.bundle/ruby/1.9.1/gems/rake-0.8.7/lib/rake.rb:1612: warning: already initialized constant FileList 
/home/john/.bundle/ruby/1.9.1/gems/rake-0.8.7/lib/rake.rb:1638: warning: already initialized constant EARLY 
/home/john/.bundle/ruby/1.9.1/gems/rake-0.8.7/lib/rake.rb:1968: warning: already initialized constant DEFAULT_RAKEFILES 
rake aborted! 
stack level too deep 
+0

và mã của bạn là? – Salil

+0

Xảy ra trên tất cả các dự án, kể cả cài đặt trần. – PlankTon

Trả lời

24

Tôi sợ là giải pháp dễ dàng hơn là chạy lệnh này thay vì rake db: di chuyển

bundle exec rake db:migrate 
+0

Vâng - điều đó thực sự có thể tốt hơn, vì môi trường của bạn không bị sửa đổi. –

+1

Nó được đề nghị bởi một người bạn của tôi, Pratik Naik (http://stackoverflow.com/users/639946/pratik-naik) người cũng sẽ xảy ra trong đội ngũ nhân viên cốt lõi. Đừng -1 bài của tôi vì điều đó, tôi chỉ đang truyền bá kiến ​​thức. :) –

1

Trông giống như một đệ quy kỳ lạ require.

Bạn đã thử gỡ cài đặt tất cả các phiên bản rake và cài đặt lại phiên bản chưa? Có lỗi trong 1.9.2rc affecting gem loading, do đó có thể là lỗi? Tôi không nhìn kỹ vào nó vì nhiều người đã theo dõi nó chặt chẽ ...

Lưu ý: 1.9.1 là phiên bản API, vì vậy nó là chính xác.

+0

Thực tế là nó đã được chấp nhận có nghĩa là nó hoạt động? –

31

Tôi cũng đã gặp sự cố này. Nó dường như không liên quan đến các phiên bản cụ thể của đường ray hoặc ruby ​​bạn đề cập, khác với những phiên bản tôi đang sử dụng (Rails 2.3.8, Rake 0.8.7, Ruby 1.9.1p378). Nó dường như có liên quan đến bundler và rake không hoạt động tốt với nhau.

Độ phân giải phù hợp với tôi được đề cập ở cuối số this lighthouse ticket. Đây là phiên bản ngắn:

  • Chạy "bundle exec bash"; xem nếu rake hoạt động ngay bây giờ - nếu có,
  • Đảm bảo rằng môi trường bash, trước và sau, đều giống nhau bằng cách tham khảo lệnh env và sửa đổi ~/.bashrc hoặc ~/.bash_profile tương ứng.

Khi bạn làm điều này, bạn sẽ làm rối tung lên một chút. Vào thời điểm đó bạn phải xóa RUBYOPT để chạy bó lệnh:

RUBYOPT= bundle install --relock 

EDIT:

Suy nghĩ về nó nhiều hơn một chút, tôi không chắc chắn này là nhất thiết phải là cách tốt nhất để giải quyết vấn đề cụ thể này. Bạn có thể đưa ra mẹo của Hiral Desai và một số câu trả lời khác trước khi sử dụng phương pháp này, vì điều này thay đổi môi trường.

+1

Tôi gặp sự cố tương tự khi thực hiện bất kỳ tác vụ cào nào trong ứng dụng Rails của mình. Nó đã biến mất sau khi chạy 'bundle exec bash', nhưng tôi phải chạy lại' bundle exec bash' nếu tôi mở một tab mới trong terminal của mình. – ravinggenius

4

Theo thông báo trước đó từ Eric W., biến môi trường RUBYOPT được đặt. Nếu bạn muốn thoát khỏi bash shell mới được mở bởi "bundle exec bash", sau đó chỉ cần sao chép dòng môi trường RUBYOPT, thoát khỏi trình bao rồi gõ "export RUBYOPT = 'THE ARGS RATNG BẠN ĐỒNG TỪ MÔI TRƯỜNG MÔI TRƯỜNG'

Lưu ý: tính năng này hoạt động với ruby ​​1.9.2p180 (2011-02-18 phiên bản 30909) [x86_64-darwin10.7.0] , Rails 3.0.7, gem 1.8.0 và Rake 0.8.7

+0

Làm việc hoàn hảo cho tôi! Cảm ơn! –

0

Tôi đã có a. thư mục bundler trên thư mục gốc của tôi đã bị xung đột. Loại bỏ nó đã làm cho tôi.

rm -rf ~/.bundler 
4

bundle exec bash công trình đối với tôi

0

Tôi đã chạy vào vấn đề này quá sau khi cập nhật rubygem (1.8.10) và bundler (1.0.18)

Tôi đã giải quyết cập nhật cào lên 0.9.2

0

Chỉ cần nhận lỗi như vậy vì xóa .rvmrc

Vì vậy, hãy chắc chắn rằng bạn đang chạy cào trong môi trường chính xác;)

3

tôi đã có thể giải quyết vấn đề này bằng cách hạ thấp rubygem tôi cài đặt từ 1.8.10 đến 1.7. 2.

gem update --system 1.7.2 
+0

Nếu bạn có rvm: rvm cài đặt rubygems 1.7.2 –

0

Nếu bạn đã cài đặt RVM, sự cố này có thể bắt đầu xảy ra khi bạn cập nhật rubygems lên 1.8.15. Vấn đề là tôi đã cài đặt rake trong gemset toàn cầu và gemset của dự án của tôi. Giải pháp là chỉ có một lần cài đặt cào. Để xóa nó khỏi gemset dự án: 1. cd cho dự án 2. ngọc uninstall cào

0

Điều này có thể xảy ra khi bạn có đá quý rake được cài đặt trong cả đá quý rvm của repo của bạn và tập hợp toàn cầu.

0

Cập nhật lên phiên bản mới nhất của Rails. Vì vậy, nếu bạn ở 4.2, hãy cập nhật => 4.2.latest.

Các vấn đề liên quan