Rails s → dyld: неудачная ленивая символьная привязка: Символ не найден: _rb_intern2 - программирование

Rails s → dyld: неудачная ленивая символьная привязка: Символ не найден: _rb_intern2

Таким образом, рельсы не работают вместе с рельсами. Я думал, что проблема связана с инструментами для героя, поэтому я удалил его, но это не помогло. Затем я проверил файл .zshrc и увидел, что у него была другая версия ruby, которую она вызывала в PATH, поэтому я обновил ее. Однако этого не произошло. У меня нет идей. Может кто-нибудь помочь, пожалуйста?

# (05/06/13 @10: 01AM) (admin @Administrators-MacBook-Pro): ~/desktop/scratch      рельсы s  dyld: lazy symbol binding failed: Символ не найден: _rb_intern2     Ссылка из:/Users/admin/.rvm/gems/ruby-1.9.3-p392/gems/sqlite3-1.3.7/lib/sqlite3/sqlite3_native.bundle     Ожидается в: плоском пространстве имен

dyld: Symbol not found: _rb_intern2
  Referenced from: /Users/admin/.rvm/gems/ruby-1.9.3-p392/gems/sqlite3-1.3.7/lib/sqlite3/sqlite3_native.bundle
  Expected in: flat namespace

[1]    69741 trace trap  rails s

# (05/06/13 @10: 02AM) (admin @Administrators-MacBook-Pro): ~/desktop/scratch      rvm list default

Default Ruby (for new shells)

   ruby-1.9.3-p392 [ x86_64 ]

# (05/06/13 @10: 11AM) (admin @Administrators-MacBook-Pro): ~/desktop/scratch  ruby -v

ruby 1.8.7 (2012-02-08 patchlevel 358) [universal-darwin12.0]

# (05/06/13 @10: 11AM) (admin @Administrators-MacBook-Pro): ~/desktop/scratch  rails -v

Rails 3.2.12

Gemfile:

source 'https://rubygems.org'

gem 'rails', '3.2.12'

# Bundle edge Rails instead:
# gem 'rails', :git => 'git://github.com/rails/rails.git'

gem 'sqlite3'
# gem 'pg'
gem "bootstrap-sass", ">= 2.3.0.0"

# Gems used only for assets and not required
# in production environments by default.
group :assets do
  gem 'sass-rails',   '~> 3.2.3'
  gem 'coffee-rails', '~> 3.2.1'

  # See https://github.com/sstephenson/execjs#readme for more supported runtimes
  # gem 'therubyracer', :platforms => :ruby

  gem 'uglifier', '>= 1.0.3'
end

gem 'jquery-rails'

# To use ActiveModel has_secure_password
# gem 'bcrypt-ruby', '~> 3.0.0'

# To use Jbuilder templates for JSON
# gem 'jbuilder'

# Use unicorn as the app server
# gem 'unicorn'

# Deploy with Capistrano
# gem 'capistrano'

# To use debugger
# gem 'debugger'

.zshrc файл:

# Path to your oh-my-zsh configuration.
ZSH=$HOME/.oh-my-zsh

# Set name of the theme to load.
# Look in ~/.oh-my-zsh/themes/
# Optionally, if you set this to "random", it'll load a random theme each
# time that oh-my-zsh is loaded.
ZSH_THEME="junkfood"

# Example aliases
# alias zshconfig="mate ~/.zshrc"
# alias ohmyzsh="mate ~/.oh-my-zsh"

# Set to this to use case-sensitive completion
# CASE_SENSITIVE="true"

# Comment this out to disable bi-weekly auto-update checks
# DISABLE_AUTO_UPDATE="true"

# Uncomment to change how many often would you like to wait before auto-updates occur? (in days)
# export UPDATE_ZSH_DAYS=13

# Uncomment following line if you want to disable colors in ls
# DISABLE_LS_COLORS="true"

# Uncomment following line if you want to disable autosetting terminal title.
# DISABLE_AUTO_TITLE="true"

# Uncomment following line if you want red dots to be displayed while waiting for completion
# COMPLETION_WAITING_DOTS="true"

# Which plugins would you like to load? (plugins can be found in ~/.oh-my-zsh/plugins/*)
# Custom plugins may be added to ~/.oh-my-zsh/custom/plugins/
# Example format: plugins=(rails git textmate ruby lighthouse)
plugins=(git)

source $ZSH/oh-my-zsh.sh

# Customize to your needs...
export PATH=//opt/local/bin:/opt/local/sbin://usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/opt/X11/bin:/usr/local/git/bin:/opt/local/bin:/opt/local/sbin:/Users/admin/.rvm/gems/ruby-1.9.3-p392/bin:/Users/admin/.rvm/gems/[email protected]/bin:/Users/admin/.rvm/rubies/ruby-1.9.3-p392/bin:/Users/admin/.rvm/bin:/usr/local/mysql/bin:/Users/admin/.rvm/bin

PATH=$PATH:$HOME/.rvm/bin # Add RVM to PATH for scripting
4b9b3361

Ответ 1

Если вы используете rvm, вы должны позволить ему добавлять свои пути к $PATH, а не делать это самостоятельно. Как бы то ни было, похоже, что вы наполовину используете rvm: вы собираете драгоценные камни, установленные для rvm, установленного рубином, но так как пути ruby ​​в rvm находятся в конце $PATH running ruby собирает рубин установленным каким-либо другим способом (возможно, в системе)

В результате у вас есть ruby ​​1.8.7, пытающийся загрузить расширение, скомпилированное для ruby ​​1.9.3, которое не работает

Ответ 2

Аналогичные ошибки формы:

Symbol not found: {some-symbol}
Referenced from: /path/to/some/file.bundle
Expected in: flat namespace

похоже, для многих драгоценных камней.

Основная проблема, по-видимому, является несовместимой библиотекой расширений C (в приведенном выше случае, sqlite3_native.bundle). Кажется, что по какой-то причине камень был установлен для более старой версии ruby, а текущая рубиновая версия не имеет экспортированного метода C, который ищет библиотека расширений.

Есть два способа решить эту проблему:

  • Удалите и переустановите пакет (как указано в комментарии Shawn Balestracci выше). В приведенном выше случае мы можем заключить, что пакет sqlite3:

    gem uninstall {package}; gem install {package}

ИЛИ (менее предпочтительным, но может быть полезно, если по какой-либо причине метод выше по ошибке):

  • Удалите файл пакета и переустановите пакет. Глядя на сообщение об ошибке: Справа от:/Users/admin/.rvm/gems/ruby-1.9.3-p392/gems/sqlite3-1.3.7/lib/sqlite3/sqlite3_native.bundle, нам просто нужно:

    rm {path-to-bundle-file}; gem install {package}

Ответ 3

Смена компилятора C работала для меня. Я получил одну из этих ошибок относительно gpgme gem. Мой двоичный файл gcc указывал на установку gcc-4.9.2, которую я установил. Я изменил это, чтобы использовать собственный компилятор clang на моей Mac OS 10.10 (Yosemite), и сервер rails работал отлично после удаления и повторной установки драгоценного камня.

Ответ 4

Я столкнулся с этой ошибкой при попытке запустить rails server, но когда я запустил bundle exec rails server, ошибок не было.

Ответ 5

Это оказалось проблемой с моей установкой Ruby, а не с реальной страницей. Что я сделал для его решения:

Я использую RVM. Поэтому сначала я обновил Ruby с 2.1.1 до 2.2:

rvm install 2.2
rvm use 2.2

Теперь вам нужно переустановить все свои драгоценные камни:

gem install bundler
bundle install

Следующее обновление вашего nginx.conf:

passenger_root /usr/local/opt/passenger/libexec/src/ruby_supportlib/phusion_passenger/locations.ini;
    passenger_ruby /Users/admin/.rvm/gems/ruby-2.2.4/wrappers/ruby;

Ваши значения для них могут быть разными.

Затем перезапустите Nginx. Ошибка исчезла.