当我运行"rails server"时,我得到以下错误:
Could not find gem 'sqlite3 (>= 0, runtime)' in any of the gem sources listed in your Gemfile.
我的GemFile如下:gem 'sqlite3'
此外,当我运行端口命令时,它说它不识别该命令:
Mohammad-Azams-MacBook-Pro:blog azamsharp$ port install sqlite3 +universal
-bash: port: command not found
有什么建议吗?
更新1:
我运行sudogeminstallsqlite3并得到以下消息:
Mohammad-Azams-MacBook-Pro:blog azamsharp$ sudo gem install sqlite3
Building native extensions. This could take a while...
ERROR: Error installing sqlite3:
ERROR: Failed to build gem native extension.
/usr/local/bin/ruby extconf.rb
checking for sqlite3.h... yes
checking for sqlite3_libversion_number() in -lsqlite3... no
sqlite3 is missing. Try 'port install sqlite3 +universal'
or 'yum install sqlite3-devel' and check your shared library search path (the
location where your sqlite3 shared library is located).
*** extconf.rb failed ***
Could not create Makefile due to some reason, probably lack of
necessary libraries and/or headers. Check the mkmf.log file for more
details. You may need configuration options.
更新2:(GemFile的内容)
source 'http://rubygems.org'
gem 'rails', '3.0.7'
# Bundle edge Rails instead:
# gem 'rails', :git => 'git://github.com/rails/rails.git'
gem 'sqlite3'
# Use unicorn as the web server
# gem 'unicorn'
# Deploy with Capistrano
# gem 'capistrano'
# To use debugger (ruby-debug for Ruby 1.8.7+, ruby-debug19 for Ruby 1.9.2+)
# gem 'ruby-debug'
# gem 'ruby-debug19', :require => 'ruby-debug'
# Bundle the extra gems:
# gem 'bj'
# gem 'nokogiri'
# gem 'sqlite3-ruby', :require => 'sqlite3'
# gem 'aws-s3', :require => 'aws/s3'
# Bundle gems for the local environment. Make sure to
# put test-only gems in this group so their generators
# and rake tasks are available in development mode:
# group :development, :test do
# gem 'webrat'
# end
更新3:
Mohammad-Azams-MacBook-Pro:blog azamsharp$ port search sqlite3
-bash: port: command not found
更新4:
下载安装Macports后,我再次运行捆绑包安装,结果如下:
Installing sqlite3 (1.3.3) with native extensions /usr/local/lib/ruby/site_ruby/1.8/rubygems/installer.rb:483:in
build_extensions':错误:无法生成gem本机扩展。(Gem::Installer::ExtensionBuildError)
/usr/local/bin/ruby extconf.rb正在检查sqlite3.h…是正在检查-lsqlite3中的sqlite3_libversion_nnumber()…否sqlite3丢失。尝试"端口安装sqlite3+通用"或'yum-install-sqlite3-devel',然后检查您的共享库搜索路径(sqlite3共享库所在的位置)。*extconf.rb失败*由于某些原因,无法创建Makefile,可能缺少必要的库和/或头。有关详细信息,请查看mkmf.log文件详细信息。您可能需要配置选项。
`
更新5:
sqlite3给了我以下信息:
Mohammad-Azams-MacBook-Pro:blog azamsharp$ which sqlite3
/opt/local/bin/sqlite3
更新5:
一个sqlite3给了我以下信息:
Mohammad-Azams-MacBook-Pro:blog azamsharp$ which -a sqlite3
/opt/local/bin/sqlite3
/usr/local/bin/sqlite3
/usr/bin/sqlite3
如果您在谈论/usr/local/bin/ruby extconf.rb checking for sqlite3.h
时遇到问题,那么这可能与macports有关。
首先,确保已安装xcode。运行:
gcc
你应该得到:
i686-apple-darwin10-gcc-4.2.1: no input files
如果你这样做了,那么让我们安装自制
然后,安装自制程序、更新rubygems和升级rails 的命令列表
brew install sqlite
gem update --system
gem install bundler
gem install rails -v=3.0.8
然后,为了进行检查,rails -v
应该输出Rails 3.0.7
如果您运行的是10.4或更早版本,则默认情况下没有安装sqlite 3(实际的DB引擎,而不是gem)。您有3个选项(假设无法将操作系统升级到10.5或10.6):
- 编译源代码(没有听起来那么糟糕)http://www.sqlite.org/download.html
- 安装MacPorts(找不到port命令的原因)http://www.macports.org/install.php
- 不要使用sqlite。相反,使用mysql或您选择的其他数据库
如果要使用sqlite以外的数据库进行部署,我建议使用后者,而使用sqlite进行部署通常不是一个好主意。我喜欢保持我的开发和生产环境相当统一,以帮助避免gotchas之类的问题。
我希望这能有所帮助。
我在回复中总结。因此:
1) 安装macports:http://www.macports.org/install.php-它有一个dmg安装程序,需要2分钟。
2) 安装后,执行"捆绑安装",sqlite3将按照Gemfile中的指定进行安装。
当您使用端口时,请查找名为sqlite3dev或类似软件包。-dev部分是关键。我不使用MacPorts,但在我的Ubuntu安装中,这是所需的软件包。
当您想要安装一个计划链接的包时,请始终查找-dev版本。-dev意味着它安装头文件以及针对该包进行开发所需的其他内容。
很可能您的gem无法构建sqlite3本机扩展,因为它正在寻找头文件,如果这不能解决您的问题,请发布gem安装的日志文件。
从Rails目录:
cd ..
cd rails-root
ruby -v
gem list sqlite3
bundle install
gem list sqlite3
bundle exec rails server
可能发生的情况是,您正在绑定一个具有.rvmrc文件的Rails应用程序。我看到过这样的情况,即捆绑在与.rvmrc文件不匹配或其他不匹配的Ruby版本下,因此当您捆绑sqlite3时,它与rails在运行应用程序时使用的Ruby版本不同。
我的两个建议是从目录中切换回目录,以及运行以bundleexec为前缀的rails服务器。
关于您的问题有几个链接:
- 在mac osx上安装sqlite3
- 雪豹&RubyonRails-SQLite3问题
- http://railsforum.com/viewtopic.php?id=23018