2012-11-26 27 views
10

Nếu tôi chạy rails s, tôi nhận được:Rails s trở lại: [BUG] Phân đoạn lỗi

/Users/adam/.rvm/gems/ruby-1.9.3-p327/gems/pg-0.13.2/lib/pg_ext.bundle: [BUG] Segmentation fault 
ruby 1.8.7 (2012-02-08 patchlevel 358) [universal-darwin12.0] 

Abort trap: 6 

phiên bản:

rails -v 
Rails 3.2.1 
ruby -v 
ruby 1.9.3p327 (2012-11-10 revision 37606) [x86_64-darwin12.2.0] 

Tại sao trong thông báo lỗi đề cập đến phiên bản ruby ​​1.8.7 nếu tôi sử dụng 1.9.3?

+0

Bạn có đúng môi trường không? Bạn đã chạy 'rvm sử dụng 1.9.3' chưa? –

+0

Đầu ra của 'đường ray' và' ruby' là gì? –

+0

Các bạn, tôi vừa cài đặt lại phiên bản rvm 1.9.3 và giờ nó đang hoạt động ... – user984621

Trả lời

3

Tôi đã có một vấn đề tương tự, chạy bất cứ điều gì với bundle exec đã đưa ra một lỗi segmentation:

~/mayapp >bundle exec rake -T 
/Users/rogermarlow/.rvm/gems/ruby-1.9.3-p327/gems/mysql2-0.3.11/lib/mysql2/mysql2.bundle: [BUG] Segmentation fault 
ruby 1.8.7 (2012-02-08 patchlevel 358) [universal-darwin11.0] 

Abort trap: 6 

tôi có hai vấn đề (1) sử dụng 1.9.3p327 thay vì 1.9.3p125 và (2) môi trường GEM_HOME trỏ biến đến một thư mục hiện không tồn tại. Vì vậy, việc sửa chữa đối với tôi là:

~/myapp >rvm list 

rvm rubies 

=* ruby-1.9.3-p327 [ x86_64 ] 

# => - current 
# =* - current && default 
# * - default 

~/myapp >rvm install 1.9.3-p125 
**snip** 
~/myapp >rvm use 1.9.3-p125 
Using /Users/rogermarlow/.rvm/gems/ruby-1.9.3-p125 
Running /Users/rogermarlow/.rvm/hooks/after_use_maglev 
~/myapp >echo $GEM_HOME 
/Users/rogermarlow/.rvm/gems/ruby-1.9.3-p125 
~/myapp ># you should check that the directory in $GEM_HOME exists, I had [email protected] which had been removed at some point 
~/myapp >bundle install 
**snip** 

Bây giờ thử mà bundle exec được Phân khúc đứt gãy ...

~/myapp >bundle exec rake -T 
rake about     # List versions of all Rails frameworks and the environment 
rake assets:clean   # Remove compiled assets 
rake assets:precompile  # Compile all the assets named in config.assets.precompile 
**snip** 
1

Tôi không biết làm thế nào về tình hình của bạn, tôi đã cài đặt ruby ​​1.8.7 trước để kiểm tra một dự án cũ hơn, sau đó tôi chuyển sang thư mục dự án đường ray hiện tại của mình, nơi tôi có một tệp .rvmrc đặt gemset của tôi là [email protected] Phiên bản ruby ​​và ray của tôi là chính xác (1.9.3, 3.2.12), nhưng rõ ràng Postgres bằng cách nào đó vẫn cố gắng sử dụng 1.8.7. và có lỗi tương tự như bạn đã đề cập.

Giải pháp của tôi:

1/ cd out of the current folder project with the .rvmrc file 
2/ rvm use 1.9.3 --default 

Sau đó, tôi trở lại dự án đường ray hiện tại của tôi chạy bó update pg, chỉ trong trường hợp, tôi không biết nếu điều đó thực sự có hiệu lực thi hành, và thì đấy, mọi thứ suôn sẻ !

12

Dường như đá quý pg của bạn được biên dịch với Ruby 1.8.7 khi bạn cài đặt ban đầu. Đơn giản chỉ cần chạy gem uninstall pg; gem install pg nên biên dịch lại nó với Ruby 1.9.3.

Nếu bạn chưa làm như vậy, tôi khuyên bạn nên sử dụng RVM để tránh loại sự cố này.

+0

Cảm ơn @davogones thực sự hữu ích. Tôi bị kẹt một lúc khi tôi di chuyển ứng dụng của mình sang postgres. Đã thử tất cả các tùy chọn khác cho đến khi tôi đến đây. Tôi đã chuyển ứng dụng của mình từ Ruby 2 sang 1.9.3 (ứng dụng được định cấu hình trên rvm) nhưng vẫn là lệnh 'rails db' thông qua cùng một ngoại lệ. lệnh 'cập nhật gói' cũng không giúp được gì. Vì vậy, như bạn đã đề cập, tôi thoát khỏi gói pg được cài đặt và sau đó cài đặt lại. Cảm ơn rất nhiều. –