【问题标题】:WEBrick rails server won't startWEBrick rails 服务器无法启动
【发布时间】:2013-04-23 10:21:21
【问题描述】:

您能推荐一个修复方法吗?

我根据其他 SE 问题尝试过的补救措施:

  • 运行捆绑安装
  • 运行 gem 清理
  • 运行 bundle exec rails server
  • 运行 sudo ln -s /usr/local/mysql/lib/libmysqlclient.18.dylib /usr/lib/libmysqlclient.18.dylib
  • 删除root密码(匹配database.yml配置文件)

已安装:

  • OSX 10.8.3
  • Ruby 2.0.0p0
  • Rails 3.2.13
  • mysql2 gem 0.3.11
  • Gemfile 中的“mysql2”
  • Mysql 14.14 5.6.11

复制:

  • 起始位置:~/Sites/simple_cms
  • 运行“rails 服务器”

然后我得到以下输出:

=> Booting WEBrick
=> Rails 3.2.13 application starting in development on http://0.0.0.0:3000
=> Call with -d to detach
=> Ctrl-C to shutdown server
Exiting
/Users/rh1n0cer0s/.rvm/gems/ruby-2.0.0-p0/gems/mysql2-0.3.11/lib/mysql2/client.rb:44:in `connect': Unknown database 'simple_cms_development' (Mysql2::Error)
    from /Users/rh1n0cer0s/.rvm/gems/ruby-2.0.0-p0/gems/mysql2-0.3.11/lib/mysql2/client.rb:44:in `initialize'
    from /Users/rh1n0cer0s/.rvm/gems/ruby-2.0.0-p0/gems/activerecord-3.2.13/lib/active_record/connection_adapters/mysql2_adapter.rb:16:in `new'
    from /Users/rh1n0cer0s/.rvm/gems/ruby-2.0.0-p0/gems/activerecord-3.2.13/lib/active_record/connection_adapters/mysql2_adapter.rb:16:in `mysql2_connection'
    from /Users/rh1n0cer0s/.rvm/gems/ruby-2.0.0-p0/gems/activerecord-3.2.13/lib/active_record/connection_adapters/abstract/connection_pool.rb:315:in `new_connection'
    from /Users/rh1n0cer0s/.rvm/gems/ruby-2.0.0-p0/gems/activerecord-3.2.13/lib/active_record/connection_adapters/abstract/connection_pool.rb:325:in `checkout_new_connection'
    from /Users/rh1n0cer0s/.rvm/gems/ruby-2.0.0-p0/gems/activerecord-3.2.13/lib/active_record/connection_adapters/abstract/connection_pool.rb:247:in `block (2 levels) in checkout'
    from /Users/rh1n0cer0s/.rvm/gems/ruby-2.0.0-p0/gems/activerecord-3.2.13/lib/active_record/connection_adapters/abstract/connection_pool.rb:242:in `loop'
    from /Users/rh1n0cer0s/.rvm/gems/ruby-2.0.0-p0/gems/activerecord-3.2.13/lib/active_record/connection_adapters/abstract/connection_pool.rb:242:in `block in checkout'
    from /Users/rh1n0cer0s/.rvm/rubies/ruby-2.0.0-p0/lib/ruby/2.0.0/monitor.rb:211:in `mon_synchronize'
    from /Users/rh1n0cer0s/.rvm/gems/ruby-2.0.0-p0/gems/activerecord-3.2.13/lib/active_record/connection_adapters/abstract/connection_pool.rb:239:in `checkout'
    from /Users/rh1n0cer0s/.rvm/gems/ruby-2.0.0-p0/gems/activerecord-3.2.13/lib/active_record/connection_adapters/abstract/connection_pool.rb:102:in `block in connection'
    from /Users/rh1n0cer0s/.rvm/rubies/ruby-2.0.0-p0/lib/ruby/2.0.0/monitor.rb:211:in `mon_synchronize'
    from /Users/rh1n0cer0s/.rvm/gems/ruby-2.0.0-p0/gems/activerecord-3.2.13/lib/active_record/connection_adapters/abstract/connection_pool.rb:101:in `connection'
    from /Users/rh1n0cer0s/.rvm/gems/ruby-2.0.0-p0/gems/activerecord-3.2.13/lib/active_record/connection_adapters/abstract/connection_pool.rb:410:in `retrieve_connection'
    from /Users/rh1n0cer0s/.rvm/gems/ruby-2.0.0-p0/gems/activerecord-3.2.13/lib/active_record/connection_adapters/abstract/connection_specification.rb:171:in `retrieve_connection'
    from /Users/rh1n0cer0s/.rvm/gems/ruby-2.0.0-p0/gems/activerecord-3.2.13/lib/active_record/connection_adapters/abstract/connection_specification.rb:145:in `connection'
    from /Users/rh1n0cer0s/.rvm/gems/ruby-2.0.0-p0/gems/activerecord-3.2.13/lib/active_record/railtie.rb:88:in `block in <class:Railtie>'
    from /Users/rh1n0cer0s/.rvm/gems/ruby-2.0.0-p0/gems/railties-3.2.13/lib/rails/initializable.rb:30:in `instance_exec'
    from /Users/rh1n0cer0s/.rvm/gems/ruby-2.0.0-p0/gems/railties-3.2.13/lib/rails/initializable.rb:30:in `run'
    from /Users/rh1n0cer0s/.rvm/gems/ruby-2.0.0-p0/gems/railties-3.2.13/lib/rails/initializable.rb:55:in `block in run_initializers'
    from /Users/rh1n0cer0s/.rvm/gems/ruby-2.0.0-p0/gems/railties-3.2.13/lib/rails/initializable.rb:54:in `each'
    from /Users/rh1n0cer0s/.rvm/gems/ruby-2.0.0-p0/gems/railties-3.2.13/lib/rails/initializable.rb:54:in `run_initializers'
    from /Users/rh1n0cer0s/.rvm/gems/ruby-2.0.0-p0/gems/railties-3.2.13/lib/rails/application.rb:136:in `initialize!'
    from /Users/rh1n0cer0s/.rvm/gems/ruby-2.0.0-p0/gems/railties-3.2.13/lib/rails/railtie/configurable.rb:30:in `method_missing'
    from /Users/rh1n0cer0s/Sites/simple_cms/config/environment.rb:5:in `<top (required)>'
    from /Users/rh1n0cer0s/Sites/simple_cms/config.ru:3:in `require'
    from /Users/rh1n0cer0s/Sites/simple_cms/config.ru:3:in `block in <main>'
    from /Users/rh1n0cer0s/.rvm/gems/ruby-2.0.0-p0/gems/rack-1.4.5/lib/rack/builder.rb:51:in `instance_eval'
    from /Users/rh1n0cer0s/.rvm/gems/ruby-2.0.0-p0/gems/rack-1.4.5/lib/rack/builder.rb:51:in `initialize'
    from /Users/rh1n0cer0s/Sites/simple_cms/config.ru:in `new'
    from /Users/rh1n0cer0s/Sites/simple_cms/config.ru:in `<main>'
    from /Users/rh1n0cer0s/.rvm/gems/ruby-2.0.0-p0/gems/rack-1.4.5/lib/rack/builder.rb:40:in `eval'
    from /Users/rh1n0cer0s/.rvm/gems/ruby-2.0.0-p0/gems/rack-1.4.5/lib/rack/builder.rb:40:in `parse_file'
    from /Users/rh1n0cer0s/.rvm/gems/ruby-2.0.0-p0/gems/rack-1.4.5/lib/rack/server.rb:200:in `app'
    from /Users/rh1n0cer0s/.rvm/gems/ruby-2.0.0-p0/gems/railties-3.2.13/lib/rails/commands/server.rb:46:in `app'
    from /Users/rh1n0cer0s/.rvm/gems/ruby-2.0.0-p0/gems/rack-1.4.5/lib/rack/server.rb:304:in `wrapped_app'
    from /Users/rh1n0cer0s/.rvm/gems/ruby-2.0.0-p0/gems/rack-1.4.5/lib/rack/server.rb:254:in `start'
    from /Users/rh1n0cer0s/.rvm/gems/ruby-2.0.0-p0/gems/railties-3.2.13/lib/rails/commands/server.rb:70:in `start'
    from /Users/rh1n0cer0s/.rvm/gems/ruby-2.0.0-p0/gems/railties-3.2.13/lib/rails/commands.rb:55:in `block in <top (required)>'
    from /Users/rh1n0cer0s/.rvm/gems/ruby-2.0.0-p0/gems/railties-3.2.13/lib/rails/commands.rb:50:in `tap'
    from /Users/rh1n0cer0s/.rvm/gems/ruby-2.0.0-p0/gems/railties-3.2.13/lib/rails/commands.rb:50:in `<top (required)>'
    from script/rails:6:in `require'
    from script/rails:6:in `<main>'

这是我的宝石清单:

actionmailer (3.2.13)
actionpack (3.2.13)
activemodel (3.2.13)
activerecord (3.2.13)
activeresource (3.2.13)
activesupport (3.2.13)
arel (3.0.2)
bigdecimal (1.2.0)
builder (3.0.4)
bundler (1.3.5)
coffee-rails (3.2.2)
coffee-script (2.2.0)
coffee-script-source (1.6.2)
erubis (2.7.0)
execjs (1.4.0)
hike (1.2.2)
i18n (0.6.1)
io-console (0.4.2)
journey (1.0.4)
jquery-rails (2.2.1)
json (1.7.7)
mail (2.5.3)
mime-types (1.23)
minitest (4.3.2)
multi_json (1.7.2)
mysql2 (0.3.11)
polyglot (0.3.3)
psych (2.0.0)
rack (1.4.5)
rack-cache (1.2)
rack-ssl (1.3.3)
rack-test (0.6.2)
rails (3.2.13)
railties (3.2.13)
rake (10.0.4, 0.9.6)
rdoc (4.0.0, 3.12.2)
rubygems-bundler (1.1.1)
rvm (1.11.3.7)
sass (3.2.8)
sass-rails (3.2.6)
sprockets (2.2.2)
test-unit (2.0.0.0)
thor (0.18.1)
tilt (1.3.7)
treetop (1.4.12)
tzinfo (0.3.37)
uglifier (2.0.1)

我的 database.yml 的内容

   development:
      adapter: mysql2
      encoding: utf8
      reconnect: false
      database: simple_cms_development
      pool: 5
      username: root
      password:
      socket: /tmp/mysql.sock

    test:
      adapter: mysql2
      encoding: utf8
      reconnect: false
      database: simple_cms_test
      pool: 5
      username: root
      password:
      socket: /tmp/mysql.sock

    production:
      adapter: mysql2
      encoding: utf8
      reconnect: false
      database: simple_cms_production
      pool: 5
      username: root
      password:
      socket: /tmp/mysql.sock

【问题讨论】:

  • 您的 mysql 在 OSX 中是否正确配置?您可以在终端中使用mysql -uroot 访问它吗?
  • 谢谢@kiddorails - 我想是的......我用密码设置了它,可以使用终端登录。会不会和 database.yml 配置中没有出现密码有关?
  • 如果您在root 帐户上有密码,那么您必须 在database.yml 中指定:)
  • 您是否运行过 rake db:create

标签: mysql ruby-on-rails webrick


【解决方案1】:

您是否运行rake db:create 来创建您的数据库?之后,rails server 应该可以工作了。

【讨论】:

  • 嗨,Nathan - 我创建了数据库并将其链接到我的 ruby​​ 项目(simple_cms)...已经有一个 database.yml(见上文)。我会尝试你的建议,但在我这样做之前,是否有理由 rake 可以代替?我需要在目录结构的某个级别运行它吗?
  • Nathan 和@Sparda 谢谢...服务器正在使用 rake db:create 运行...我安装了 mysql 并创建了数据库而不执行此步骤,并认为它已经创建了
  • 嘿,您有没有机会将此答案标记为正确?谢谢
【解决方案2】:

尝试在终端中执行此操作,然后启动您的 WEBRick 服务器。

sudo ln -s /usr/local/mysql/lib/libmysqlclient.18.dylib /usr/lib/libmysqlclient.18.dylib

编辑:从这里得到解决方案,似乎它可能与您所处的情况相同。

【讨论】:

  • 谢谢@JoshEmory - 你知道这是做什么的或为什么有效吗?如果使用不当,sudo 也会造成伤害。
  • @djmb 是的 sudo 命令会造成伤害。但是这个特定的命令实际上不会对您的计算机造成任何伤害。基本上,libmysqlclient.18.dylib 文件似乎安装在与正在查看的位置不同的位置(在许多此类计算机上)。此命令正在创建一个符号链接,rails 正在寻找它。符号链接只是一个小指针文件,因此如果有人在有符号链接的地方查看它,他们实际上会从其他位置看到该文件。把它想象成一个副本,但不是真正的复制,它只是指向。
  • 感谢乔希的周到回复
  • 正如他所说,它只是为那个 sql lib 创建一个符号链接,就可以了。 :)
  • 感谢 Josh 和 Kiddorails - 我仍然无法让服务器运行(请参阅上面的新输出)
最近更新 更多