【问题标题】:error with rails server commandrails server 命令出错
【发布时间】:2014-05-12 14:32:42
【问题描述】:

您能否指出任何好的资源来展示如何将 Sql Server 连接到 Rails 应用程序(Windows 7)?

到目前为止,我已经完成了以下工作: rails new simple_cms –d sqlserver

gem install bundle

rails s

在最后一条命令之后,抛出此错误:

C:\Sites\s_cms>rails s
C:/Ruby193/lib/ruby/gems/1.9.1/gems/activesupport-4.1.1/lib/active_support/core_ext/module/aliasing.rb:32:in `alias_method': undefined method `add_order!' for class `Class' (Name
Error)
        from C:/Ruby193/lib/ruby/gems/1.9.1/gems/activesupport-4.1.1/lib/active_support/core_ext/module/aliasing.rb:32:in `alias_method_chain'
        from C:/Ruby193/lib/ruby/gems/1.9.1/gems/activerecord-sqlserver-adapter-2.3.8/lib/active_record/connection_adapters/sqlserver_adapter/core_ext/active_record.rb:14:in `singletonclass'
        from C:/Ruby193/lib/ruby/gems/1.9.1/gems/activerecord-sqlserver-adapter-2.3.8/lib/active_record/connection_adapters/sqlserver_adapter/core_ext/active_record.rb:12:in `inc
luded'
        from C:/Ruby193/lib/ruby/gems/1.9.1/gems/activerecord-sqlserver-adapter-2.3.8/lib/active_record/connection_adapters/sqlserver_adapter/core_ext/active_record.rb:145:in `in
clude'
        from C:/Ruby193/lib/ruby/gems/1.9.1/gems/activerecord-sqlserver-adapter-2.3.8/lib/active_record/connection_adapters/sqlserver_adapter/core_ext/active_record.rb:145:in `<t
op (required)>'
        from C:/Ruby193/lib/ruby/gems/1.9.1/gems/activerecord-sqlserver-adapter-2.3.8/lib/active_record/connection_adapters/sqlserver_adapter.rb:3:in `require'
        from C:/Ruby193/lib/ruby/gems/1.9.1/gems/activerecord-sqlserver-adapter-2.3.8/lib/active_record/connection_adapters/sqlserver_adapter.rb:3:in `<top (required)>'
        from C:/Ruby193/lib/ruby/gems/1.9.1/gems/activerecord-sqlserver-adapter-2.3.8/lib/activerecord-sqlserver-adapter.rb:1:in `require'
        from C:/Ruby193/lib/ruby/gems/1.9.1/gems/activerecord-sqlserver-adapter-2.3.8/lib/activerecord-sqlserver-adapter.rb:1:in `<top (required)>'
        from C:/Ruby193/lib/ruby/gems/1.9.1/gems/bundler-1.6.1/lib/bundler/runtime.rb:76:in `require'
        from C:/Ruby193/lib/ruby/gems/1.9.1/gems/bundler-1.6.1/lib/bundler/runtime.rb:76:in `block (2 levels) in require'
        from C:/Ruby193/lib/ruby/gems/1.9.1/gems/bundler-1.6.1/lib/bundler/runtime.rb:72:in `each'
        from C:/Ruby193/lib/ruby/gems/1.9.1/gems/bundler-1.6.1/lib/bundler/runtime.rb:72:in `block in require'
        from C:/Ruby193/lib/ruby/gems/1.9.1/gems/bundler-1.6.1/lib/bundler/runtime.rb:61:in `each'
        from C:/Ruby193/lib/ruby/gems/1.9.1/gems/bundler-1.6.1/lib/bundler/runtime.rb:61:in `require'
        from C:/Ruby193/lib/ruby/gems/1.9.1/gems/bundler-1.6.1/lib/bundler.rb:132:in `require'
        from C:/Sites/s_cms/config/application.rb:7:in `<top (required)>'
        from C:/Ruby193/lib/ruby/gems/1.9.1/gems/railties-4.1.1/lib/rails/commands/commands_tasks.rb:79:in `require'
        from C:/Ruby193/lib/ruby/gems/1.9.1/gems/railties-4.1.1/lib/rails/commands/commands_tasks.rb:79:in `block in server'
        from C:/Ruby193/lib/ruby/gems/1.9.1/gems/railties-4.1.1/lib/rails/commands/commands_tasks.rb:76:in `tap'
        from C:/Ruby193/lib/ruby/gems/1.9.1/gems/railties-4.1.1/lib/rails/commands/commands_tasks.rb:76:in `server'
        from C:/Ruby193/lib/ruby/gems/1.9.1/gems/railties-4.1.1/lib/rails/commands/commands_tasks.rb:40:in `run_command!'
        from C:/Ruby193/lib/ruby/gems/1.9.1/gems/railties-4.1.1/lib/rails/commands.rb:17:in `<top (required)>'
        from bin/rails:4:in `require'
        from bin/rails:4:in `<main>'

PS:如果我使用 sqlite 作为数据库系统,我能够成功启动网络服务器(没有错误)。这可能意味着我的 rails 安装没有问题。我猜我可能需要在 database.yml 中添加某些东西或在某处写入数据库用户和密码。但是为什么这不是 sqlite3 所必需的呢? 我还找到了这个资源,但不确定是否仍然适用(它指的是 rails 2.0,而我使用的是 rails 4.1.1)http://rubyrailsandwindows.blogspot.de/2008/03/rails-2-and-sql-server-2008-on-windows_24.html - 以及我尝试过但不适用的一些东西。 提前致谢。

稍后编辑:在编辑 database.yml(来自 config 文件夹)后,我还尝试了 rails s 以包含:

development:
  adapter: sqlserver
  encoding: unicode
  database: cms
  pool: 5
  username: guest1
  password: pwd1234%^&^
test:
  adapter: sqlserver
  encoding: unicode
  database: cms
  pool: 5
  username: guest1
  password: pwd1234%^&^
production:
  adapter: sqlserver
  encoding: unicode
  database: cms
  pool: 5
  username: guest1
  password: pwd1234%^&^

(当然,我之前还创建了一个名为 cms 的数据库,并使用指定的密码添加了一个名为 guest1 的用户,然后通过模仿本地 Sql Server 本身的网络连接来确保凭据可以连接到数据库)

执行此新操作后,我收到与上述类似的错误:

C:\Sites\simple_cms>rails s
C:/Ruby193/lib/ruby/gems/1.9.1/gems/activesupport-.1.1/lib/active_support/core_ext/module/aliasing.rb:32:in `alias_method': undefined method `add_order!' for class `Class' (Name Error)
        from C:/Ruby193/lib/ruby/gems/1.9.1/gems/activesupport-4.1.1/lib/active_support/core_ext/module/aliasing.rb:32:in `alias_method_chain'
        ...............

【问题讨论】:

    标签: sql ruby-on-rails ruby sql-server windows


    【解决方案1】:

    这是activerecord-sqlserver-adapter 的一个已知错误。它正在处理中,但尚未将任何修复合并到里程碑中。

    看来刚才的解决方法是将您的Gemfile 更改为:

    gem 'activerecord-sqlserver-adapter', git: 'https://github.com/Desarrollo-CeSPI/activerecord-sqlserver-adapter.git'
    

    问题的详细信息是here,正在努力解决它是here

    【讨论】:

    • 非常感谢,格雷姆。我按照您的建议编辑了 gemfile,然后再次运行 rails s。它提示我执行bundle install - 在我尝试运行它之后,我得到:Fetching https://github.com/Desarrollo-CeSPI/activerecord-sqlserver-adapter.git fatal: unable to access 'https://github.com/Desarrollo-CeSPI/activerecord-sqlserver-adapt er.git/': Failed connect to github.com:443; No error Retrying git clone "https://github.com/Desarrollo-CeSPI/activerecord-sqlserver-adapter.gi t" "C:/Ruby193/lib/ruby/gems/1.9.1/cache/bundler/git/activerecord-sqlserver-adapter-a19f0 dc7902.....
    • 会不会又是因为代理?我认为在按照此处的建议设置 HTTP_PROXY 环境变量后我已经摆脱了这种情况:stackoverflow.com/questions/23607571/set-proxy-for-rubygems。我不知道如何强制捆绑安装使用代理(语法??)运行,或者这甚至是问题所在。奇怪的是,我可以通过在浏览器中输入这个地址来连接到github.com/Desarrollo-CeSPI/activerecord-sqlserver-adapter.git,因此我认为它可能又是一个代理。
    • 很可能是您的代理。该分叉确实具有有效的 .gemspec,因此它应该可以工作。鉴于您可以访问存储库,您可能需要将其作为 zip 下载(除非您可以 git clone 它)并在本地构建它。把它放在某个地方,然后在该目录中运行gem build activerecord-sqlserver-adapter.gemspec,然后运行gem install &lt;name of gem that was just built&gt;
    • 我去了这个页面 (github.com/Desarrollo-CeSPI/activerecord-sqlserver-adapter),下载了 zip 文件 (activerecord-sqlserver-adapter-master.zip),然后转到我们的 rails 应用程序的根目录,将解压缩的存档复制到那里,运行 gem build activerecord-sqlserver-adapter.gemspec在该目录中(称为activerecord-sqlserver-adapter-master)并出现以下错误:C:\Sites\activerecord-sqlserver-adapter-master&gt;gem build activerecord-sqlserver-adapter.gemspec ERROR: Gemspec file not found: activerecord-sqlserver-adapter.gemspec 感谢您的耐心...
    • 你确定在 .gemspec 文件所在的目录中吗?我刚刚在 Windows 上尝试过它并且它有效 - 当它解压缩文件时它位于嵌套目录 C:\activerecord-sqlserver-adapter-master\activerecord-sqlserver-adapter-master 中。但是,我只是转到带有 gemspec 的目录并输入 gem build a&lt;TAB&gt;,使用 让它自动完成文件名并确保它是正确的。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-01-02
    • 1970-01-01
    • 2013-03-21
    • 2017-06-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多