2011-06-02 122 views
0

当我运行“轨道服务器”我得到以下错误:麻烦Rails服务器入门

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 

有什么建议吗?

UPDATE 1:

我运行须藤宝石安装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. 

UPDATE 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 

UPDATE 3:

Mohammad-Azams-MacBook-Pro:blog azamsharp$ port search sqlite3 -bash: port: command not found

UPDATE 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':错误:未能建立宝石原生扩展。 (宝石::安装:: ExtensionBuildError)

在/ usr/local/bin目录/红宝石extconf.rb 检查sqlite3.h ...是 检查在-lsqlite3 sqlite3_libversion_number()...没有 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:

其中-a sqlite3的给了我以下内容:

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

尝试“捆绑安装; bundle exec rails server“或者”gem install sqlite3“? – 2011-06-02 16:55:36

+0

这真的是整个Gemfile吗?顶部不应该有'source'吗? – 2011-06-02 16:56:27

+0

@Craig Stuntz我只显示一个因为它有很多代码行你想让我粘贴完整的GemFile吗? – azamsharp 2011-06-02 16:58:12

回答

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和升级轨

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

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

+1

wolgabott再次袭击! – 2011-06-08 13:18:35

+0

@Ben你不能阻止机器人,你只能希望遏制他! – 2011-06-08 13:34:00

+0

如果您在xcode之前安装了rvm,您可能需要重新安装ruby(当然是通过rvm)并重新创建并重新安装您使用的gemset。 – Artur79 2012-07-20 13:45:43

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或您选择的其他数据库。

如果您打算使用sqlite以外的其他数据库进行部署,那么我推荐后者,并且用sqlite进行部署通常不是一个好主意。我喜欢保持我的开发和生产环境相当统一,以避免陷入困境等等。

我希望这会有所帮助。

+0

我正在运行Mac OSX 10.6.6,并且我在此mac上使用过sqlite3,但我想我更新了我的rails引擎,现在它可以似乎没有工作。 – azamsharp 2011-06-02 17:34:57

+0

@azamsharp阅读其他评论和答案,我不知道该说些什么。我的10.6盒子工作得很好。这是一个长镜头,但尝试更新到最新的开发人员工具。 “免费”版本仍然可用。这就是我所拥有的。如果一切都失败了,那么我会回推荐#3 ......除非你打算使用sqlite部署:-)希望SO中的其他人有更多有用的建议。 – brettish 2011-06-02 20:33:14

+0

我放弃了sqlite3,并尝试MySQL和相同的问题。现在我正在研究MongoDb。 – azamsharp 2011-06-02 20:53:29

1

我在回复中总结。所以:

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

2)安装完成后,按照您的Gemfile中的说明安装'bundle install'和sqlite3。

+0

我下载了MacPorts并安装Macports。然后我运行命令'sudo port install sqlite3 + universal'。它与sqlite3一起安装了一堆东西。但即使是现在,当我说'轨道服务器'它给了我同样的错误'找不到宝石sqlite3' – azamsharp 2011-06-02 18:21:06

+0

你做捆绑安装吗? – Spyros 2011-06-02 18:34:27

+0

是的,我刚刚做到了!请参阅更新4。 – azamsharp 2011-06-02 18:45:14

0

当您使用端口寻找所谓的sqlite3-dev的或类似的东西包。 -dev部分是关键。我不使用MacPorts,但在我的Ubuntu安装中,这是所需的软件包。

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

最有可能你的宝石不能建立sqlite3原生扩展,因为它正在寻找头文件,如果这不能解决你的问题,请发布日志文件的宝石安装。

+0

仔细查看上面的更新,似乎它能够找到你的sqlite头文件。如果你可以发布mkmf.log的输出,这将帮助我看到编译的问题。 – 2011-06-06 21:45:59

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版本相同。

更改目录并返回到它,以及运行rails服务器与前缀的捆绑exec是我的两个建议。