Rails框架技术讲座:创建Rails框架的网络服务(Web Service)

Posted by cnruby Wed, 08 Mar 2006 18:14:00 GMT

Rails框架技术讲座:创建Rails框架的网络服务(Web Service)

目录

 (一)系统环境:

  1. 软件语言 Ruby 1.8.2
  2. 软件框架 Rails 1.0.0
  3. 开发编辑工具 Notepad2
  4. SQLite 3.3.3
  5. SQLite-Ruby 1.1.0
  6. SQLite 3.x的可视化工具:SQLite Database Browser

 (二)前提条件:

  1. 我们的工作目录为d:\works_rails。
  2. 我们需要一个浏览器,如FireFox,或者Flock
  3. 讲座"创建连接数据库SQLite 3.x的Rails网络应用软件"是本讲座的基础。

 (三)目的:

  1. 借助于Action Web Service,创建和使用Rails框架的网络服务(Web Service)。
  2. 我们创建项目的完整代码 web_service.zip

 (四)解决方案:

  1. 我们根据讲座"创建连接数据库SQLite 3.x的Rails网络应用软件"的方法:
    • 来创建一个项目名称为web_service;
    • 来创建开发、测试和产品三个数据库,它们的名称分别为webs_dev、webs_tst和webs_prd;
    • 来修改我们Rails框架连接数据库SQLite的配置文件D:\works_rails\web_service\config\database.yml
  2. 利用Rails框架的自动代码生成工具:
    • 来创建为我们网络服务提供数据的模型Lesson,其命令如下:
      ruby script\generate model Lesson

    • 来创建网络服务API定义类LessonServiceApi和实现网络服务API的控制器类LessonServiceController的类框架代码,其命令如下:
      ruby script\generate web_service LessonService find_lesson find_all_lessons

      从中我们得到二个重要文件lesson_service_api.rb和lesson_service_controller.rb。下面我们说明和修改它们。
  3. 我们首先考虑我们的网络服务要做什么。假定我们可以让用户获取表lessons的所有记录或者按id寻找。
  4. 修改文件 environment.rb,为了我们的中文显示。
  5. 创建网络服务API定义类,告诉客户端用户如何调用我们的网络服务。
    lesson_service_api.rb
  6. 创建实现网络服务API的类,这是为网络服务提供的一种实现。
    lesson_service_controller.rb
  7. 测试一下我们网络服务是否正常,我们在浏览器地址栏中输入:
    http://localhost:3000/lesson_service/service.wsdl
    我们看到如下图所示,说明一切正常:

    浏览器访问文件顺序为:
       lesson_service_controller.rb
       lesson_service_api.rb
       lesson.rb
  8. 最后,我们来使用这个网络服务。正如上述,我们可以通过一个Ruby客户端程序 client_lesson.rb 来获取表lessons数据记录,下面执行该程序,其命令如下:
    client_lesson.rb
    或者
    client_lesson.rb > results.txt

    文件client_lesson.rb编码最好使用utf-8。
    我们用Notepad2来打开文件results.rb:

 (四)视听教学:

  1. 喜道技术日记数字广播Beta RSS: 
    http://www.hhtong.com/blog1/files/rails.rss
  2. 如何利用免费Apple iTunes收听"喜道技术日记数字广播"?
    下载软件:http://www.apple.com/itunes/download/
    安装软件:iTunes
    收听喜道技术日记数字广播Beta:菜单| 高级(A)| 订购Podcast(P)...| 输入 http://www.hhtong.com/blog1/files/rails.rss
  3. 德国之声中文数字广播RSS:
    http://rss.dw-world.de/xml/podcast_radio_china

 (五)必须注意的问题:

  1. 为什么我们在上面的DOS-Shell窗口看到乱码?
    因为我们的文件client_lesson.rb编码是utf-8,所以标题文字是乱码。另外,从服务器传过来的内容编码也是utf-8。如果我们的文件client_lesson.rb改为使用编码ANSI(中文需要重新输入)的话,那么我们可以看到:

    注意,我使用的操作系统是德文。
  2. 为什么我们会出现如下图片?

    这个说明我们没有修改文件 environment.rb

 (六)参考资料:

  1. Rails框架网络服务的基本概念:
    http://manuals.rubyonrails.com/read/chapter/67
  2. Rails框架Action Web Service API:
    http://rails.rubyonrails.com/files/vendor/rails/actionwebservice/README.html
  3. 网络服务实例:
    http://www.mindspring.com/~eric_rollins/rails/DwarvesOnRails.html





________________________________________________________________ 您只要点击下面图标,就可以把本文加入到您喜欢的公共收藏库中去。
del.icio.us Digg | FURL | Yahoo! My Web 2.0 | Reddit | Blinklist | Fark

Posted in  | Tags  | 2 comments | no trackbacks

Rails框架技术讲座:AJAX之七 自定义方法 text_field_with_auto_complete

Posted by cnruby Sun, 05 Mar 2006 15:30:00 GMT

Rails框架技术讲座:AJAX之七 自定义方法 text_field_with_auto_complete

目录

 (一)系统环境:

  1. Ruby 1.8.2
  2. Rails 1.0.0
  3. SQLite 3.3.3
    下载 sqlite-3_3_3.zip sqlitedll-3_3_3.zip
    解压它们,得到文件sqlite3.exe和sqlite3.dll;
    复制它们到目录[RUBY_HOME]/bin下面;
  4. SQLite-Ruby 1.1.0
    如下命令安装该模块是针对SQLite 3.x版本:
    gem install sqlite3-ruby -r -y
  5. SQLite 3.x的可视化工具:SQLite Database Browser
    解压它,我们得到软件SQLite Database Browser 1.2.1.exe

 (二)前提条件:

  1. 我们的工作目录为d:\works_rails。
  2. 我们需要一个浏览器,如FireFox,或者Flock
  3. 本讲座的基础需要:"创建连接数据库SQLite 3.x的Rails网络应用软件"。
  4. 本讲座的姐妹篇是:"AJAX之六 默认方法text_field_with_auto_complete"

 (三)目的:

  1. 通过AJAX Scriptaculous(该框架的部分内容已经集成到了Rails框架,因此我们目前无需安装该Scriptaculous框架),实现在Rails框架下的应用软件客户端与服务端交互操作,这种操作过程是借助于方法 text_field_with_auto_complete和用户自定义方法auto_complete_for_ModelName_FieldName来完成的。
  2. 我们创建项目的完整代码:customized_autoc.zip

 (四)解决方案:

  1. 我们根据讲座"创建连接数据库SQLite 3.x的Rails网络应用软件"的方法:
    • 来创建一个项目名称为autocomplete,其命令为:
      rails customized_autoc

    • 来创建开发、测试和产品三个数据库,它们的名称分别为cautoc_dev、cautoc_tst和cautoc_prd;

    • 来修改我们Rails框架连接数据库SQLite的配置文件D:\works_rails\autocomplete\config\database.yml

    • 来创建控制器admin和模型Lesson代码,其作用是处理(增加,修改和删除)数据库autoc_dev表lessons记录,其命令如下:
      ruby script\generate scaffold Lesson admin

  2. 把AJAX script.aculo.us框架和Rails框架的页面连接起来。为了做到这一点,在文件app/views/layouts/admin.rhtml中增加四行代码:
    ...
      <%= javascript_include_tag "prototype" %>
      <%= javascript_include_tag "dragdrop" %>
      <%= javascript_include_tag "effects" %>
      <%= javascript_include_tag "controls" %>
    ...

  3.  显示部分最核心的代码将出现在文件app/views/admin/_form.html中。这一行代码如下:
    ...
    <%= text_field_with_auto_complete 'lesson', 'title' %>
    ...

  4. 控制器代码在文件app/controllers/admin_controller.rb中被增加一个方法auto_complete_for_lesson_title:
    ...
      def auto_complete_for_lesson_title
        title = params[:lesson][:title]
        @lessons = Lesson.find(:all,
                               :conditions => [ 'title LIKE ?', '%' + title + '%' ],
                               :order => 'title DESC',
                               :limit => 8 ) unless title.blank?
        render :inline => "<%= auto_complete_result @lessons, :title %>"
      end
    ...

  5. 启动网络服务器,在DOS-Shell中输入命令:
    ruby script\server

    打开浏览器,访问我们软件,其网址为:
    http://localhost:3000/admin/new
    我们的结果如下图所示:


 )视听教学:

 


 )必须注意的问题:

 


 )参考资料:

  1. 如下网站说明本讲座类似的例子,但是它的代码更为实用:
    http://demo.script.aculo.us/ajax/autocompleter_customized





________________________________________________________________ 您只要点击下面图标,就可以把本文加入到您喜欢的公共收藏库中去。
del.icio.us Digg | FURL | Yahoo! My Web 2.0 | Reddit | Blinklist | Fark

Posted in  | no comments | no trackbacks

Rails框架技术讲座:AJAX之六 默认方法 text_field_with_auto_complete

Posted by cnruby Sun, 05 Mar 2006 10:55:00 GMT

Rails框架技术讲座:AJAX之六 默认方法text_field_with_auto_complete

目录

 (一)系统环境:

  1. Ruby 1.8.2
  2. Rails 1.0.0
  3. SQLite 3.3.3
    下载 sqlite-3_3_3.zip sqlitedll-3_3_3.zip
    解压它们,得到文件sqlite3.exe和sqlite3.dll;
    复制它们到目录[RUBY_HOME]/bin下面;
  4. SQLite-Ruby 1.1.0
    如下命令安装该模块是针对SQLite 3.x版本:
    gem install sqlite3-ruby -r -y
  5. SQLite 3.x的可视化工具:SQLite Database Browser
    解压它,我们得到软件SQLite Database Browser 1.2.1.exe

 (二)前提条件:

  1. 我们的工作目录为d:\works_rails。
  2. 我们需要一个浏览器,如FireFox,或者Flock
  3. 本讲座的基础需要:"创建连接数据库SQLite 3.x的Rails网络应用软件"。

 (三)目的:

  1. 通过AJAX Scriptaculous(该框架的部分内容已经集成到了Rails框架,因此我们目前无需安装该Scriptaculous框架),实现在Rails框架下的应用软件客户端与服务端交互操作,这种操作过程是借助于方法 text_field_with_auto_complete和默认方法auto_complete_for来完成的。
  2. 我们创建项目的完整代码:autocomplete.zip

 (四)解决方案:

  1. 我们根据讲座"创建连接数据库SQLite 3.x的Rails网络应用软件"的方法:
    • 来创建一个项目名称为autocomplete,其命令为:
      rails autocomplete

    • 来创建开发、测试和产品三个数据库,它们的名称分别为autoc_dev、autoc_tst和autoc_prd;

    • 来修改我们Rails框架连接数据库SQLite的配置文件D:\works_rails\autocomplete\config\database.yml,如下图所示:

    • 来创建控制器admin和模型Lesson代码,其作用是处理(增加,修改和删除)数据库autoc_dev表lessons记录,其命令如下:
      ruby script\generate scaffold Lesson admin

  2. 把AJAX script.aculo.us框架和Rails框架的页面连接起来。为了做到这一点,在文件app/views/layouts/admin.rhtml中增加四行代码:
    ...
      <%= javascript_include_tag "prototype" %>
      <%= javascript_include_tag "dragdrop" %>
      <%= javascript_include_tag "effects" %>
      <%= javascript_include_tag "controls" %>
    ...

  3.  显示部分最核心的代码将出现在文件app/views/admin/_form.html中。这一行代码如下:
    ...
    <%= text_field_with_auto_complete 'lesson', 'title' %>
    ...

  4. 控制器代码在文件app/controllers/admin_controller.rb中被增加一行:
    ...
    auto_complete_for :lesson, :title
    ...

  5.  启动网络服务器,在DOS-Shell中输入命令:
    ruby script\server

    打开浏览器,访问我们软件,其网址为:
    http://localhost:3000/admin/new
    我们的结果如下图所示:


 (五)必须注意的问题:

)视听教学

 )参考资料:

  1. http://demo.script.aculo.us/ajax/autocompleter





________________________________________________________________ 您只要点击下面图标,就可以把本文加入到您喜欢的公共收藏库中去。
del.icio.us Digg | FURL | Yahoo! My Web 2.0 | Reddit | Blinklist | Fark

Posted in  | Tags  | no comments | no trackbacks

Rails框架技术讲座:创建自己的Rails框架模块(module)

Posted by cnrails Thu, 02 Mar 2006 19:44:00 GMT

Rails框架技术讲座:创建自己的Rails框架模块(module)

目录

 (一)系统环境:

  1. 软件语言 Ruby 1.8.2
  2. 软件框架 Rails 1.0.0
  3. 开发编辑工具 Notepad2

 (二)前提条件:

  1. 我们的工作目录为d:\works_rails。
  2. 我们需要一个浏览器,如FireFox,或者Flock
  3. 讲座"用Shell来创建Rails网络应用软件"是本讲座的基础,或者
    讲座"用Eclipse来创建Rails网络应用软件"是本讲座的基础

 (三)目的:

  1. 在Windows XP 或者 Windows 200下,如何在Rails框架的目录lib下创建自己的模块(module),及其相关类。
  2. 我们创建项目的完整代码 lib_module.zip

 (四)解决方案:

  1. 根据讲座"用Shell来创建Rails网络应用软件"的方法:
    • 来创建一个项目名称为lib_module
  2. 创建一个含有方法index的控制器admin,其命令为:
    ruby script\generate controller admin index

  3. 创建自己的模块Kernel,该模块的文件 mdate.rb 存放在目录[RAILS_APP]/lib下,我们的例子是在D:\works_rails\lib_module\lib下。该模块相关的类文件 c_date.rb 也存放在同样的目录下。该模块的功能生成一个当前的中文格式日期,如:2006年3月27日
  4. 把自己模块连接到Rails框架,需要修改在目录D:\works_rails\lib_module\config下的文件 environment.rb ,增加一行代码即可:
    ...
    # Include your application configuration below
    require 'mdate'
    ...
  5. 使用自己已创建的模块,在文件D:\works_rails\lib_module\app\controllers\admin_controller.rb的方法index中增加一行代码:
    ...
        render :text => cnDate
    ...
  6. 启动网络服务器,在DOS-Shell中输入命令:
    ruby script\server
    打开浏览器,访问我们软件,其网址为:
    http://localhost:3000/admin
    我们的结果如下图所示:

 (五)必须注意的问题:

  1. 为什么文件mdate.rb可以找到类CDate呢?
    一句话:名称命名规则。
  2. 我们创建的文件一定要用UTF-8编码进行存储。

 (六)参考资料:

  1. 关于日期讨论:
    http://groups.google.com/group/comp.lang.ruby/browse_thread/thread/b019ce19ed791ad3




________________________________________________________________ 您只要点击下面图标,就可以把本文加入到您喜欢的公共收藏库中去。
del.icio.us Digg | FURL | Yahoo! My Web 2.0 | Reddit | Blinklist | Fark

Posted in  | Tags  | no comments | no trackbacks

Older Posts

Older Posts: 1 ... 22 23 24 25 26 27