2013-05-06 33 views
13

因此,rails s不能与rails生成一起工作。我认为这个问题是英雄工具带,所以我删除了它,但这并没有办法。然后我检查了我的.zshrc文件,发现它有一个不同版本的ruby,它在PATH中调用,所以我更新了它。但是,这并没有做到这一点。我没有想法。有人可以帮忙吗?rails s - > dyld:懒惰符号绑定失败:找不到符号:_rb_intern2

#(05/6月13日@ 10:上午01时)(管理员@管理员 - 的MacBook-PRO):找不到符号:〜/桌面/划伤 轨小号 使dyld:懒符号绑定失败_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/6月13日@ 10:11AM)(管理员@管理员 - 的MacBook-PRO):〜/桌面/划伤 红宝石-v

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

#( 05// 13 @ 10:11AM)(管理员@管理员 - 的MacBook-PRO):〜/桌面/划伤 轨-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 
+9

尝试rvm重新加载。然后尝试宝石卸载sqlite3和宝石安装sqlite3 – 2013-05-06 14:18:46

+0

omfg!有效!!!!谢谢你,肖恩。如果可能,你能解释它为什么起作用吗? – 2013-05-06 14:29:38

+1

rvm reload让你摆脱了1/2 1.8.7/1.9.3状态(见Frederick Cheung的回答)。我不确定这是否损坏了sqlite3 gem安装,所以我只是让你重新安装它(这是给你的错误。) – 2013-05-06 15:05:28

回答

8

如果你使用RVM你应该让它的路径添加到$ PATH,而不是自己动手。实际上,它看起来像是你使用rvm的一半:你正在为rvm安装的ruby获取已安装的gem,但由于rvm ruby​​路径在$ PATH运行的末尾,运行ruby正在拾取通过安装的ruby一些其他的方法(可能是系统提供的一个)

其结果是你有红宝石1.8.7试图加载编译为Ruby 1.9.3的扩展,它不工作

13

的类似的错误形式:

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

似乎出现了很多宝石。

底层问题似乎是一个不兼容的C扩展库(在上面的例子中,sqlite3_native.bundle)。似乎无论出于何种原因,gem都是为旧版本的ruby而安装的,而当前的ruby版本没有扩展库正在寻找的导出的C方法。

有两种方法来解决这个

  • 卸载&重新安装包(如在肖恩Balestracci的评论指出,以上)。在上述情况下,我们可以推断,该包是sqlite3的:

    gem uninstall {package}; gem install {package}

OR(较不优选的,但可能是有用的,如果上述方法中由于某种原因失败):

  • 删除软件包文件并重新安装软件包。看看错误信息: 引用自:/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}

+1

删除软件包文件,并重新安装软件包帮助了我。谢谢一堆! – levelone 2015-11-18 04:41:43

+0

我使用的外部gem(gemfile中的路径)已经被编译为不同版本的ruby。这帮助我意识到这一点。 – 2017-05-26 13:52:04

1

更改C编译器为我工作。我收到了关于gpgme gem的这些错误之一。我的gcc二进制文件指向我安装的gcc-4.9.2的安装。我改变了这个在我的Mac OS 10.10(Yosemite)上使用本地clang编译器,并且在卸载并重新安装gem后,rails服务器正常工作。

1

我在尝试运行rails server时遇到该错误,但运行bundle exec rails server时没有错误。

0

这原来是我的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。错误消失了。

相关问题