无法启动Rails服务器

时间:2011-06-02 16:54:26

标签: ruby-on-rails ruby-on-rails-3 sqlite

当我运行'rails server'时,我收到以下错误:

Could not find gem 'sqlite3 (>= 0, runtime)' in any of the gem sources listed in your Gemfile.

我的GemFile看起来像这样:gem 'sqlite3'

当我运行port命令时,它说它无法识别该命令:

Mohammad-Azams-MacBook-Pro:blog azamsharp$ port install sqlite3 +universal
-bash: port: command not found

有什么建议吗?

更新1:

我运行sudo gem install sqlite3并得到以下消息:

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后,我再次运行了bundle install,结果如下:

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 ::安装:: ExtensionBuildError)

/ usr / local / bin / ruby​​ extconf.rb 检查sqlite3.h ...是的 检查-lsqlite3中的sqlite3_libversion_number()...没有 sqlite3丢失了。试试'port install sqlite3 + universal' 或'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:

-a sqlite3给了我以下内容:

Mohammad-Azams-MacBook-Pro:blog azamsharp$ which -a sqlite3
/opt/local/bin/sqlite3
/usr/local/bin/sqlite3
/usr/bin/sqlite3

6 个答案:

答案 0 :(得分:3)

如果您在谈论/usr/local/bin/ruby extconf.rb checking for sqlite3.h时遇到问题,那么可能与macports有关。

首先,确保安装了xcode。运行:

gcc

你应该得到:

i686-apple-darwin10-gcc-4.2.1: no input files

如果你这样做,那就让我们install homebrew

然后,安装自制软件,更新rubygems和升级rails的命令列表

brew install sqlite
gem update --system
gem install bundler
gem install rails -v=3.0.8

然后,要检查,rails -v应输出Rails 3.0.7

答案 1 :(得分:2)

如果您运行的是10.4或更早版本,则默认情况下不安装sqlite 3(实际的数据库引擎,而不是gem)。您有3个选项(假设您的操作系统升级到10.5或10.6不是一个选项):

  1. 编译来源(不像听起来那么糟糕)http://www.sqlite.org/download.html
  2. 安装MacPorts(未找到端口命令的原因)http://www.macports.org/install.php
  3. 不要使用sqlite。而是使用mysql或您选择的其他数据库。
  4. 如果您打算使用除sqlite之外的某些数据库进行部署,我建议使用后者,并且通常使用sqlite进行部署并不是一个好主意。我喜欢保持我的开发和生产环境相当统一,以帮助避免陷阱等。

    我希望这会有所帮助。

答案 2 :(得分:1)

我在答复中总结。所以:

1)安装macports:http://www.macports.org/install.php - 它有一个dmg安装程序,需要2分钟。

2)安装完成后,执行'bundle install'并按照Gemfile中的指定安装sqlite3。

答案 3 :(得分:0)

当您使用端口查找名为sqlite3-dev的软件包或类似的软件包时。 -dev部分是关键。我不使用MacPorts,但在我的Ubuntu安装上,这是必需的包。

如果要安装计划链接的程序包,请始终查找-dev版本。 -dev意味着它将头文件安装在针对该软件包进行开发所需的其他事项中。

很可能你的gem无法构建sqlite3本机扩展,因为它正在查找头文件,如果这不能解决你的问题,请发布gem文件安装的日志文件。

答案 4 :(得分:0)

从您的Rails目录:

cd ..
cd rails-root
ruby -v
gem list sqlite3
bundle install
gem list sqlite3
bundle exec rails server

您可能正在发生的事情是捆绑在具有.rvmrc文件的Rails应用程序中。我已经看到你在一个版本的Ruby下捆绑了与.rvmrc文件或其他一些不匹配的情况,所以当你捆绑sqlite3时,它不在rails运行应用程序时使用的Ruby版本下

更改目录并返回目录,并运行带有bundle exec前缀的rails服务器是我的两个建议。

答案 5 :(得分:-1)