【问题标题】:Using Rails 2.x with MS SQL Server 2005在 MS SQL Server 2005 中使用 Rails 2.x
【发布时间】:2008-09-15 21:26:02
【问题描述】:

这里有人在使用 Rails 2.x 的 MS SQL Server 2005 方面有过积极的经验吗?

我们的开发人员使用 Mac OS X,我们的产品在 Linux 上运行。由于遗留原因,我们应该使用 MS SQL Server 2005。

我们正在使用 ruby​​-odbc 并且遇到了各种问题,太令人沮丧了,无法在此处列出。我觉得我们做错了什么。

我说的是不折不扣的用法,即迁移等等。

谢谢,

【问题讨论】:

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


    【解决方案1】:

    您考虑过使用 JRuby 吗? Microsoft 有一个JDBC driver for SQL Server,可以在 UNIX 变体上运行(它是纯 Java AFAIK)。我今天能够获得使用 JRuby 和 Rails 2.1 的 2.0 技术预览。我还没有尝试迁移,但到目前为止,驱动程序似乎运行良好。

    下面是如何让它工作的粗略草图:

    1. 确保已安装 Java 6
    2. 使用JRuby website 上的说明安装 JRuby
    3. 使用 gem (jruby -S gem install rails) 安装 Rails
    4. 下载Microsoft's SQL Server JDBC driver的UNIX包(2.0版)
    5. 解压 Microsoft 的 SQL Server 驱动程序
    6. 找到 sqljdbc4.jar 并将其复制到 JRuby 的 lib 目录中
    7. jruby -S gem install activerecord-jdbcmssql-adapter
    8. 创建一个 Rails 项目 (jruby -S rails hello)
    9. 在 database.yml 中放入正确的设置(示例如下)
    10. 一切就绪!尝试运行 jruby script/console 并创建一个模型。
    发展: 主机:本地主机 适配器:jdbc 用户名:sa 密码:kitte 驱动程序:com.microsoft.sqlserver.jdbc.SQLServerDriver 网址:jdbc:sqlserver://localhost;databaseName=mydb 超时:5000

    注意:我不确定您是否可以将 Windows 身份验证与 JDBC 驱动程序一起使用。您可能需要使用 SQL Server 身份验证。

    祝你好运!

    【讨论】:

    • 不应该是activerecord-jdbcmssql-adapter吗?
    • 在我写这篇文章的时候它对我有用,虽然并不完美。如果我使用您建议的设置,也许效果会更好。我可能会尝试一下。同时,社区 wiki 已开启 - 随时编辑。
    • 非常感谢,这对我来说就像一个魅力。虽然您需要安装 gem 'activerecord-jdbcmssql-adapter'。
    【解决方案2】:

    您是否考虑过在 Windows 上运行 rails,而不是在 Linux 上运行生产服务器?我目前正在使用 SQL Server 开发一个应用程序,直到知道它似乎运行良好。

    这些是从运行在 Windows 上的 Rails 2.0 应用程序访问 SQL Server 数据库的步骤。

    Rails 2 默认不包含 SQL Server 适配器,需要使用以下命令下载安装。

    gem install activerecord-sqlserver-adapter
    --source=http://gems.rubyonrails.org
    

    下载最新版本的ruby-dbi

    http://rubyforge.org/projects/ruby-dbi/

    然后从 ruby​​-dbi\lib\dbd\ADO.rb 中提取文件

    转至 C:\ruby\lib\ruby\site_ruby\1.8\DBD\ADO\ADO.rb。

    警告,ADO文件夹不存在,需要提前创建。

    无法使用 --database 选项为 SQL Server 预配置 Rails,只需像往常一样创建应用程序,然后修改应用程序文件夹中的 config\database.yml,如下所示:

    development:
    adapter: sqlserver
    database: your_database_name
    host: your_sqlserver_host
    username: your_sqlserver_user
    password: your_sqlserver_password
    

    运行 rake db:migrate 检查您的安装。如果一切正常,您应该不会收到任何错误消息。

    【讨论】:

      【解决方案3】:

      我强烈建议您权衡从旧数据库迁移。你可能很快就会发现自己陷入了一个痛苦的世界。根据经验,Rails 和遗留模式也不能很好地结合在一起。

      恐怕我认为这个问题没有“好的解决方案”。

      【讨论】:

      • 你正在为痛苦的世界做好准备。迁移您的数据,或者将某种 MySQL 前端设置到您的 MS SQL 后端,如果还有其他您没有提及的问题。 Rails 需要的模式应该是足够的动力。
      【解决方案4】:

      我们的开发人员使用 Mac OS X,我们的产品在 Linux 上运行。由于遗留原因,我们应该使用 MS SQL Server 2005。

      我们在 Ubuntu 8.04 上进行开发,但我们的生产服务器运行的是 Linux (Centos),并且我们也在使用 SqlServer 2005。

      根据我们的经验,最初的设置和配置非常痛苦 - 花了几周时间才让所有东西都能很好地配合使用。但是,现在一切都变得平淡无奇,我发现 SqlServer 运行良好。

      我们使用 FreeTDS ODBC 驱动程序,一旦配置就可以了。

      不要在 Windows 上运行 Rails 应用程序 - 你是在自找麻烦。这对开发来说很好,但仅此而已。 Rails 在 Windows 平台上不能很好地扩展。

      希望对您有所帮助。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2010-11-18
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-04-18
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多