Click here to view and discuss this page in DocCommentXchange. In the future, you will be sent there automatically.

SAP Sybase SQL Anywhere 16.0 (中文) » SQL Anywhere 服务器 - 编程 » Ruby 支持 » SQL Anywhere Ruby API 支持

 

配置 SQL Anywhere 中的 Rails 支持

可在 SQL Anywhere 中配置 Ruby on Rails 支持。

前提条件

执行此任务没有前提条件。

 任务
  1. 安装 RubyGems。它可以简化 Ruby 程序包的安装。Ruby on Rails 下载页面将引导您安装正确版本。请参见 [external link] http://www.rubyonrails.org/

  2. 在系统中安装 Ruby 解释器。Ruby on Rails 下载页面会推荐要安装的版本。请参见 [external link] http://www.rubyonrails.org/

  3. 运行以下命令安装 Ruby Rails 及其依赖包:

    gem install rails
  4. 安装 Ruby 开发工具包 (DevKit)。从 [external link] http://rubyinstaller.org/downloads/ 下载 DevKit,然后按 [external link] http://github.com/oneclick/rubyinstaller/wiki/Development-Kit 中的说明进行操作。

  5. 运行以下命令安装 SQL Anywhere ActiveRecord 支持 (activerecord-sqlanywhere-adapter):

    gem install activerecord-sqlanywhere-adapter
  6. 将 SQL Anywhere 添加到 Rails 支持的数据库管理系统集。编写本文档时,Rails 3.1.3 是当时发布的版本。

    1. 在 Rails configs\databases 目录中创建 sqlanywhere.yml 文件,以配置数据库。如果已将 Ruby 安装到 \Ruby 目录中,并安装了 3.1.3 版本的 Rails,则此文件的路径为 \Ruby\lib\ruby\gems\1.9.1\gems\railties-3.1.3\lib\rails\generators\rails\app\templates\config\databases。此文件的内容应该为:



      #
      # SQL Anywhere database configuration
      #
      # This configuration file defines the patten used for
      # database filenames. If your application is called "blog",
      # then the database names will be blog_development,
      # blog_test, blog_production. The specified username and
      # password should permit DBA access to the database.
      #
      
      development:
        adapter: sqlanywhere
        server: <%= app_name %>
        database: <%= app_name %>_development
        username: DBA
        password: sql
      
      # Warning: The database defined as "test" will be erased and
      # re-generated from your development database when you run "rake".
      # Do not set this db to the same as development or production.
      test:
        adapter: sqlanywhere
        server: <%= app_name %>
        database: <%= app_name %>_test
        username: DBA
        password: sql
      
      production:
        adapter: sqlanywhere
        server: <%= app_name %>
        database: <%= app_name %>_production
        username: DBA
        password: sql

      sqlanywhere.yml 文件提供了一个模板,用于在 Rails 项目中创建 database.yml 文件。可以指定以下数据库选项:

      • adapter   (必选,无缺省值)。此选项必须设置为 sqlanywhere 才能使用 SQL Anywhere ActiveRecord 适配器。

      • database   (必选,无缺省值)。此选项对应于连接字符串中的 DatabaseName。

      • server   (可选,缺省为 database 选项)。此选项对应于连接字符串中的 ServerName。

      • username   (可选,缺省为 'DBA')。此选项对应于连接字符串中的 UserID。

      • password   (可选,缺省为 'DBA')。此选项对应于连接字符串中的 Password。

      • encoding   (可选,缺省为 OS 字符集)。此选项对应于连接字符串中的 CharSet。

      • commlinks   (可选)。此选项对应于连接字符串中的 CommLinks。

      • connection_name   (可选)。此选项对应于连接字符串中的 ConnectionName。

    2. 更新 Rails app_base.rb 文件。使用上一步骤中的相同假设条件,此文件位于 \Ruby\lib\ruby\gems\1.9.1\gems\railties-3.1.3\lib\rails\generators\app_base.rb 路径中。编辑 app_base.rb 文件,并找到以下行:

      DATABASES = %w( mysql oracle postgresql sqlite3 frontbase ibm_db sqlserver )

      sqlanywhere 添加到列表,如下所示:

      DATABASES = %w( sqlanywhere mysql oracle postgresql sqlite3 frontbase ibm_db sqlserver )
  7. 使用以下 SQL Anywhere 特定注释按照 Ruby on Rails Web 站点 ([external link] http://guides.rails.info/getting_started.html) 上的教程进行操作。

    • 在此教程中,将介绍用于初始化 blog 项目的命令。使用以下命令可以初始化 blog 项目以用于 SQL Anywhere:

      rails new blog -d sqlanywhere
      
    • 创建 blog 应用程序后,切换到其文件夹以直接在该应用程序中继续工作:

      cd blog
      
    • 编辑 gemfile 文件以包括用于 SQL Anywhere ActiveRecord 适配器的 gem 指令。在下面指定的行后添加新指令:

      gem 'sqlanywhere'
      gem 'activerecord-sqlanywhere-adapter'
    • config\database.yml 文件引用了开发、测试和生产数据库。不按照教程的指示使用 rake 命令创建数据库,而是切换到项目的 db 目录并创建如下三个数据库。

      cd db
      dbinit -dba DBA,sql blog_development
      dbinit -dba DBA,sql blog_test
      dbinit -dba DBA,sql blog_production
      cd ..

结果

已在 SQL Anywhere 中配置了 Rails 支持。

下一个

按如下所示启动数据库服务器和上述三个数据库。

dbsrv16 -n blog blog_development.db blog_production.db blog_test.db

命令行 (blog) 中的数据库服务器名称必须与 database.yml 文件中 server: 标签所指定的名称相匹配。sqlanywhere.yml 模板文件的配置可以保证数据库服务器名称与生成的所有 database.yml 文件中的项目名称相匹配。

 另请参见