【问题标题】:Rails server and console fails to start due to Authlogic for ruby 2.0 and rails 3.2由于 ruby​​ 2.0 和 rails 3.2 的 Authlogic,Rails 服务器和控制台无法启动
【发布时间】:2014-04-06 12:41:32
【问题描述】:

我有 ruby​​ 版本 2.0.0p451 和 rails 版本 3.2.13。我运行了 bundle install 并安装了所有的 gem。当我尝试 rails s 命令时,出现以下错误:

问题似乎与 authlogic 有关。我卸载了它,服务器启动正常。有什么想法吗?

   /usr/local/lib/ruby/gems/2.0.0/gems/activesupport-3.2.13/lib/active_support/dependencies.rb:251:in `require': cannot load such file -- scrypt (LoadError)
        from /usr/local/lib/ruby/gems/2.0.0/gems/activesupport-3.2.13/lib/active_support/dependencies.rb:251:in `block in require'
        from /usr/local/lib/ruby/gems/2.0.0/gems/activesupport-3.2.13/lib/active_support/dependencies.rb:236:in `load_dependency'
        from /usr/local/lib/ruby/gems/2.0.0/gems/activesupport-3.2.13/lib/active_support/dependencies.rb:251:in `require'
        from /usr/local/lib/ruby/gems/2.0.0/bundler/gems/authlogic-f19ff3a9eb88/lib/authlogic/crypto_providers/scrypt.rb:1:in `<top (required)>'
        from /usr/local/lib/ruby/gems/2.0.0/gems/activesupport-3.2.13/lib/active_support/dependencies.rb:251:in `require'
        from /usr/local/lib/ruby/gems/2.0.0/gems/activesupport-3.2.13/lib/active_support/dependencies.rb:251:in `block in require'
        from /usr/local/lib/ruby/gems/2.0.0/gems/activesupport-3.2.13/lib/active_support/dependencies.rb:236:in `load_dependency'
        from /usr/local/lib/ruby/gems/2.0.0/gems/activesupport-3.2.13/lib/active_support/dependencies.rb:251:in `require'
        from /usr/local/lib/ruby/gems/2.0.0/bundler/gems/authlogic-f19ff3a9eb88/lib/authlogic.rb:60:in `block in <top (required)>'
        from /usr/local/lib/ruby/gems/2.0.0/bundler/gems/authlogic-f19ff3a9eb88/lib/authlogic.rb:59:in `each'
        from /usr/local/lib/ruby/gems/2.0.0/bundler/gems/authlogic-f19ff3a9eb88/lib/authlogic.rb:59:in `<top (required)>'
        from /usr/local/lib/ruby/gems/2.0.0/gems/bundler-1.6.1/lib/bundler/runtime.rb:76:in `require'
        from /usr/local/lib/ruby/gems/2.0.0/gems/bundler-1.6.1/lib/bundler/runtime.rb:76:in `block (2 levels) in require'
        from /usr/local/lib/ruby/gems/2.0.0/gems/bundler-1.6.1/lib/bundler/runtime.rb:72:in `each'
        from /usr/local/lib/ruby/gems/2.0.0/gems/bundler-1.6.1/lib/bundler/runtime.rb:72:in `block in require'
        from /usr/local/lib/ruby/gems/2.0.0/gems/bundler-1.6.1/lib/bundler/runtime.rb:61:in `each'
        from /usr/local/lib/ruby/gems/2.0.0/gems/bundler-1.6.1/lib/bundler/runtime.rb:61:in `require'
        from /usr/local/lib/ruby/gems/2.0.0/gems/bundler-1.6.1/lib/bundler.rb:132:in `require'
        from /home/superq/quizot/config/application.rb:7:in `<top (required)>'
        from /usr/local/lib/ruby/gems/2.0.0/gems/railties-3.2.13/lib/rails/commands.rb:53:in `require'
        from /usr/local/lib/ruby/gems/2.0.0/gems/railties-3.2.13/lib/rails/commands.rb:53:in `block in <top (required)>'
        from /usr/local/lib/ruby/gems/2.0.0/gems/railties-3.2.13/lib/rails/commands.rb:50:in `tap'
        from /usr/local/lib/ruby/gems/2.0.0/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>'

当我尝试打开控制台时,这是我得到的:

/usr/local/lib/ruby/2.0.0/irb/completion.rb:9:in `require': cannot load such file -- readline (LoadError)
    from /usr/local/lib/ruby/2.0.0/irb/completion.rb:9:in `<top (required)>'
    from /usr/local/lib/ruby/gems/2.0.0/gems/railties-3.2.13/lib/rails/commands/console.rb:3:in `require'
    from /usr/local/lib/ruby/gems/2.0.0/gems/railties-3.2.13/lib/rails/commands/console.rb:3:in `<top (required)>'
    from /usr/local/lib/ruby/gems/2.0.0/gems/railties-3.2.13/lib/rails/commands.rb:38:in `require'
    from /usr/local/lib/ruby/gems/2.0.0/gems/railties-3.2.13/lib/rails/commands.rb:38:in `<top (required)>'
    from script/rails:6:in `require'
    from script/rails:6:in `<main>'

我已经卸载了 ruby​​、rails 并安装了几次。似乎没有任何工作。有什么想法吗?

我只有一个 rails 应用程序,并且永远不会在这台机器上需要另一个 rails 应用程序。安装的所有 gem 仅适用于该应用程序。它工作正常,但我的硬盘崩溃了,现在我正在尝试在新硬盘上设置相同的应用程序。

【问题讨论】:

  • 养成为每个项目创建 gemset 的习惯,然后您需要为该应用程序设置该 gemset,只需键入 gem install rails -v "version" 安装 rails 然后运行 ​​bundle。
  • 我确实有一个 gemfile,我使用捆绑安装。在这里分享有用吗?
  • 你安装了 ruby​​、rails 吗?
  • 是的,当然。我安装了 ruby​​ 和 rails。添加了 gemfile。
  • 在 application.rb 文件中添加这一行 Bundler.require(:default, Rails.env)

标签: ruby-on-rails ruby webrick


【解决方案1】:

更新到 authlogic-3.4.1 时 scrypt 和 bcrypt 出现同样的错误

我的解决方案是将 scrypt gem 添加到我的 gemfile 中:

gem 'authlogic', '~> 3.4.1'
gem 'bcrypt', '~> 3.1.7'
gem 'scrypt', '1.2.1'

【讨论】:

    【解决方案2】:

    您的 ruby​​ 安装很可能未针对 readline 开发标头进行编译。尝试将此添加到您的Gemfile

    gem 'rb-readline'
    

    这会将 readline 的纯 ruby​​ 实现添加到您的应用程序中,而不是期望编译的版本。

    【讨论】:

      【解决方案3】:

      您应该使用以下命令安装 ruby​​ readline:

      gem install rb-readline
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-06-22
        • 2015-03-30
        • 2014-08-08
        • 2014-08-06
        相关资源
        最近更新 更多