WEBrick 无法启动默认 rails 应用程序:"uninitialized constant ActiveRecord::ConnectionAdapters::Column::Format"

WEBrick fails to start default rails app: "uninitialized constant ActiveRecord::ConnectionAdapters::Column::Format"

我正尝试在 Windows 机器上开始 Ruby Rails 开发,但我无法让 WEBrick 启动默认的 Rails 应用程序。

这是我尝试创建和启动应用程序的输出:

C:\Users\my_user>ruby -v
ruby 2.2.4p230 (2015-12-16 revision 53155) [i386-mingw32]

C:\Users\my_user\Desktop\wkspc>rails new sample_app
[...]
Bundle complete! 11 Gemfile dependencies, 57 gems now installed.
Use `bundle show [gemname]` to see where a bundled gem is installed.

C:\Users\my_user\Desktop\wkspc>cd sample_app

C:\Users\my_user\Desktop\wkspc\sample_app>rails server
DEPRECATION WARNING: alias_method_chain is deprecated. Please, use Module#prepend instead. From module, you can access the original method using super. (called from require at bin/rails:4)
Bundler::GemRequireError: There was an error while trying to load the gem 'activerecord-jdbcsqlite3-adapter'.
Gem Load Error is: uninitialized constant ActiveRecord::ConnectionAdapters::Column::Format
Backtrace for gem load error is:
C:/jruby-9.1.2.0/lib/ruby/gems/shared/gems/activerecord-jdbc-adapter-1.3.20/lib/arjdbc/jdbc/type_cast.rb:13:in `<module:TypeCast>'
C:/jruby-9.1.2.0/lib/ruby/gems/shared/gems/activerecord-jdbc-adapter-1.3.20/lib/arjdbc/jdbc/type_cast.rb:7:in `<module:Jdbc>'
C:/jruby-9.1.2.0/lib/ruby/gems/shared/gems/activerecord-jdbc-adapter-1.3.20/lib/arjdbc/jdbc/type_cast.rb:4:in `<module:ConnectionAdapters>'
C:/jruby-9.1.2.0/lib/ruby/gems/shared/gems/activerecord-jdbc-adapter-1.3.20/lib/arjdbc/jdbc/type_cast.rb:3:in `<top>'
C:/jruby-9.1.2.0/lib/ruby/gems/shared/gems/activerecord-jdbc-adapter-1.3.20/lib/arjdbc/jdbc/column.rb:1:in `singleton class'
C:/jruby-9.1.2.0/lib/ruby/gems/shared/gems/activerecord-jdbc-adapter-1.3.20/lib/arjdbc/jdbc/column.rb:70:in `<class:singleton class>'
C:/jruby-9.1.2.0/lib/ruby/gems/shared/gems/activerecord-jdbc-adapter-1.3.20/lib/arjdbc/jdbc/column.rb:68:in `<module:JdbcColumn>'
C:/jruby-9.1.2.0/lib/ruby/gems/shared/gems/activerecord-jdbc-adapter-1.3.20/lib/arjdbc/jdbc/column.rb:12:in `<module:ConnectionAdapters>'
C:/jruby-9.1.2.0/lib/ruby/gems/shared/gems/activerecord-jdbc-adapter-1.3.20/lib/arjdbc/jdbc/column.rb:2:in `<top>'
C:/jruby-9.1.2.0/lib/ruby/gems/shared/gems/activerecord-jdbc-adapter-1.3.20/lib/arjdbc/jdbc/column.rb:1:in `<top>'
C:/jruby-9.1.2.0/lib/ruby/gems/shared/gems/activerecord-jdbc-adapter-1.3.20/lib/arjdbc/jdbc/adapter.rb:1:in `require'
C:/jruby-9.1.2.0/lib/ruby/gems/shared/gems/activerecord-jdbc-adapter-1.3.20/lib/arjdbc/jdbc/adapter.rb:1:in `<module:(root)>'
C:/jruby-9.1.2.0/lib/ruby/gems/shared/gems/activerecord-jdbc-adapter-1.3.20/lib/arjdbc/jdbc/adapter.rb:9:in `<top>'
C:/jruby-9.1.2.0/lib/ruby/gems/shared/gems/activerecord-jdbc-adapter-1.3.20/lib/arjdbc/jdbc.rb:1:in `require'
C:/jruby-9.1.2.0/lib/ruby/gems/shared/gems/activerecord-jdbc-adapter-1.3.20/lib/arjdbc/jdbc.rb:1:in `<top>'
C:/jruby-9.1.2.0/lib/ruby/gems/shared/gems/activerecord-jdbc-adapter-1.3.20/lib/arjdbc/jdbc.rb:52:in `require'
C:/jruby-9.1.2.0/lib/ruby/gems/shared/gems/activerecord-jdbc-adapter-1.3.20/lib/arjdbc/jdbc.rb:52:in `<top>'
C:/jruby-9.1.2.0/lib/ruby/gems/shared/gems/activerecord-jdbc-adapter-1.3.20/lib/arjdbc/jdbc.rb:3:in `require'
C:/jruby-9.1.2.0/lib/ruby/gems/shared/gems/activerecord-jdbc-adapter-1.3.20/lib/arjdbc/jdbc.rb:3:in `block in (root)'
C:/jruby-9.1.2.0/lib/ruby/gems/shared/gems/activerecord-jdbc-adapter-1.3.20/lib/arjdbc.rb:1:in `each'
C:/jruby-9.1.2.0/lib/ruby/gems/shared/gems/activerecord-jdbc-adapter-1.3.20/lib/arjdbc.rb:1:in `block in (root)'
C:/jruby-9.1.2.0/lib/ruby/gems/shared/gems/activerecord-jdbc-adapter-1.3.20/lib/arjdbc.rb:9:in `each'
C:/jruby-9.1.2.0/lib/ruby/gems/shared/gems/activerecord-jdbc-adapter-1.3.20/lib/arjdbc.rb:9:in `(root)'
C:/jruby-9.1.2.0/lib/ruby/gems/shared/gems/activerecord-jdbcsqlite3-adapter-1.3.20/lib/activerecord-jdbcsqlite3-adapter.rb:1:in `(root)'
C:/jruby-9.1.2.0/lib/ruby/gems/shared/gems/activerecord-jdbcsqlite3-adapter-1.3.20/lib/activerecord-jdbcsqlite3-adapter.rb:2:in `<top>'
C:/jruby-9.1.2.0/lib/ruby/gems/shared/gems/bundler-1.12.5/lib/bundler/runtime.rb:1:in `require'
C:/jruby-9.1.2.0/lib/ruby/gems/shared/gems/bundler-1.12.5/lib/bundler/runtime.rb:1:in `block in (root)'
C:/jruby-9.1.2.0/lib/ruby/gems/shared/gems/bundler-1.12.5/lib/bundler/runtime.rb:86:in `tap'
C:/jruby-9.1.2.0/lib/ruby/gems/shared/gems/bundler-1.12.5/lib/bundler/runtime.rb:86:in `require'
C:/jruby-9.1.2.0/lib/ruby/gems/shared/gems/bundler-1.12.5/lib/bundler/runtime.rb:81:in `require'
C:/jruby-9.1.2.0/lib/ruby/gems/shared/gems/bundler-1.12.5/lib/bundler/runtime.rb:70:in `<top>'
bin/rails:4:in `require'
bin/rails:4:in `<top>'
Bundler Error Backtrace:

  block in require at C:/jruby-9.1.2.0/lib/ruby/gems/shared/gems/bundler-1.12.5/lib/bundler/runtime.rb:90
              each at org/jruby/RubyArray.java:1593
  block in require at C:/jruby-9.1.2.0/lib/ruby/gems/shared/gems/bundler-1.12.5/lib/bundler/runtime.rb:81
              each at org/jruby/RubyArray.java:1593
           require at C:/jruby-9.1.2.0/lib/ruby/gems/shared/gems/bundler-1.12.5/lib/bundler/runtime.rb:70
           require at C:/jruby-9.1.2.0/lib/ruby/gems/shared/gems/bundler-1.12.5/lib/bundler.rb:102
             <top> at C:/Users/my_user/Desktop/wkspc/sample_app/config/application.rb:7
           require at org/jruby/RubyKernel.java:944
   block in (root) at C:/jruby-9.1.2.0/lib/ruby/gems/shared/gems/railties-5.0.0/lib/rails/commands/commands_tasks.rb:1
               tap at org/jruby/RubyKernel.java:1743
            server at C:/jruby-9.1.2.0/lib/ruby/gems/shared/gems/railties-5.0.0/lib/rails/commands/commands_tasks.rb:88
            server at C:/jruby-9.1.2.0/lib/ruby/gems/shared/gems/railties-5.0.0/lib/rails/commands/commands_tasks.rb:85
             <top> at C:/jruby-9.1.2.0/lib/ruby/gems/shared/gems/railties-5.0.0/lib/rails/commands/commands_tasks.rb:49
           require at org/jruby/RubyKernel.java:944
             <top> at bin/rails:4

问题似乎出在 gem 'activerecord-jdbcsqlite3-adapter',错误表明 uninitialized constant ActiveRecord::ConnectionAdapters::Column::Format

我是否跳过了一些重要的配置步骤?感谢您的帮助!

根据 this issue,activerecord-jdbc-adapter 在 Rails 5 中仍然存在兼容性问题。rails-5 有一个分支,您可以使用通过在你的 Gemfile 中使用这一行:

gem 'activerecord-jdbc-adapter', :git => "https://github.com/jruby/activerecord-jdbc-adapter.git",
                                 :branch => "rails-5"

我 运行 在尝试使用目标 branch: 'rails-5 时遇到了这个问题(已从存储库中删除。我在使用特定版本时也遇到了兼容性问题 gem activerecord-jdbc-adapter "1.3.20"

activerecord-jdbc-adapter 存储库中仍然支持 rails v5.0.0.1 的最旧标签是 50.1

我在我的 Gemfile 中更新了以下内容:

gem 'activerecord-jdbc-adapter', '50.1'
gem 'activerecord-jdbcsqlite3-adapter', '50.1'