`

新手RoR十分钟初体验Step By Step

    博客分类:
  • rOr
阅读更多

新手RoR十分钟初体验Step By Step

声明一下,这是个新手启动的体验文章,高手不要看了。。。:)

1、安装Ruby
Windows用户去 http://rubyforge.org/http://rubyforge.org/projects/rubyinstaller/ 下载 One-Click Installer - Windows 安装即可,最新版1.8.5-21

2、测试是否安装成功
建议一个Test.rb文件,内容如下

  1. hello = "Hello Ruby World."  
  2. puts hello  

在命令行下运行 ruby Test.rb ,注意安装时%RUBY_HOME%\bin已经设置在你的PATH中了,检查一下即可,运行正确的话就会显示
Hello Ruby World.
结果出来

也可以启动FreeRIDE,新建一个文件,保存,按F5就可以运行得到结果了。在FreeRIDE的Edit菜单==>Preferences...==>Debugger/Run的右边,选中Run process in terminal,运行时可以打开新的窗口来查看,默认在FreeRIDE下面显示结果。

3、利用gem安装其它模块
在命令行下运行 gem install rails
安装提示与结果
Install required dependency activesupport? [Yn]  y
Install required dependency activerecord? [Yn]  y
Install required dependency actionpack? [Yn]  y
Install required dependency actionmailer? [Yn]  y
Install required dependency actionwebservice? [Yn]  y
Successfully installed rails-1.1.6
Successfully installed activesupport-1.3.1
Successfully installed activerecord-1.14.4
Successfully installed actionpack-1.12.5
Successfully installed actionmailer-1.2.5
Successfully installed actionwebservice-1.1.6
Installing ri documentation for activesupport-1.3.1...
Installing ri documentation for activerecord-1.14.4...
Installing ri documentation for actionpack-1.12.5...
Installing ri documentation for actionmailer-1.2.5...
Installing ri documentation for actionwebservice-1.1.6...
Installing RDoc documentation for activesupport-1.3.1...
Installing RDoc documentation for activerecord-1.14.4...
Installing RDoc documentation for actionpack-1.12.5...
Installing RDoc documentation for actionmailer-1.2.5...
Installing RDoc documentation for actionwebservice-1.1.6...

再运行gem list检查一下看是否安装上去了,会有一堆列表显示,新的也在里面,安装前后各gem list一下,就可以对比得到以下结果

4、安装后各模块介绍
actionmailer (1.2.5) 邮件分发与测试模块,类似Java里的JavaMail的东东
actionpack (1.12.5) 类似于Web的MVC中的V与C
actionwebservice (1.1.6) Web Service支持
activerecord (1.14.4) ORM工具,类似Java中的Hibernate之类的
activesupport (1.3.1) Rails框架所依赖的一些基础工具类
rails (1.1.6) Web应用框架Rails包含模板引擎,控制层及ORM

5、默认安装后的模块有
fxri (0.3.3)
    Graphical interface to the RI documentation, with search engine.
fxruby (1.6.1, 1.2.6)
    FXRuby is the Ruby binding to the FOX GUI toolkit.
log4r (1.0.5) 日志库,Java中就象Log4J或Jakarta的Commons-Logging
rake (0.7.1) 类似make的工具,Java中就象Ant或Maven
sources (0.0.1)
    This package provides download sources for remote gem installation
win32-clipboard (0.4.0)
    A package for interacting with the Windows clipboard
win32-dir (0.3.0)
    Extra constants and methods for the Dir class on Windows.
win32-eventlog (0.4.1)
    Interface for the MS Windows Event Log.
win32-file (0.5.2)
    Extra or redefined methods for the File class on Windows.
win32-file-stat (1.2.2)
    A File::Stat class tailored to MS Windows
win32-process (0.4.2)
    Adds fork, wait, wait2, waitpid, waitpid2 and a special kill method
win32-sapi (0.1.3)
    An interface to the MS SAPI (Sound API) library.
win32-sound (0.4.0)
    A package for playing with sound on Windows.
windows-pr (0.5.1)
    Windows functions and constants predefined via Win32API

6、创建Web应用
在命令行下运行 rails rorweb ,会在rorweb目录下创建相应的一堆完整的Web应用的目录结构,然后你应该做的就是写你的程序了。
      create
      create  app/controllers
      create  app/helpers
      create  app/models
      create  app/views/layouts
      create  config/environments
      create  components
      create  db
      create  doc
      create  lib
      create  lib/tasks
      create  log
      create  public/images
      create  public/javascripts
      create  public/stylesheets
      create  script/performance
      create  script/process
      create  test/fixtures
      create  test/functional
      create  test/integration
      create  test/mocks/development
      create  test/mocks/test
      create  test/unit
      create  vendor
      create  vendor/plugins
      create  tmp/sessions
      create  tmp/sockets
      create  tmp/cache
      create  Rakefile
      create  README
      create  app/controllers/application.rb
      create  app/helpers/application_helper.rb
      create  test/test_helper.rb
      create  config/database.yml
      create  config/routes.rb
      create  public/.htaccess
      create  config/boot.rb
      create  config/environment.rb
      create  config/environments/production.rb
      create  config/environments/development.rb
      create  config/environments/test.rb
      create  script/about
      create  script/breakpointer
      create  script/console
      create  script/destroy
      create  script/generate
      create  script/performance/benchmarker
      create  script/performance/profiler
      create  script/process/reaper
      create  script/process/spawner
      create  script/runner
      create  script/server
      create  script/plugin
      create  public/dispatch.rb
      create  public/dispatch.cgi
      create  public/dispatch.fcgi
      create  public/404.html
      create  public/500.html
      create  public/index.html
      create  public/favicon.ico
      create  public/robots.txt
      create  public/images/rails.png
      create  public/javascripts/prototype.js
      create  public/javascripts/effects.js
      create  public/javascripts/dragdrop.js
      create  public/javascripts/controls.js
      create  public/javascripts/application.js
      create  doc/README_FOR_APP
      create  log/server.log
      create  log/production.log
      create  log/development.log
      create  log/test.log

7、启动Web应用
进入rorweb目录,运行 ruby script\server 启动之,信息如下
=> Booting WEBrick...
=> Rails application started on http://0.0.0.0:3000
=> Ctrl-C to shutdown server; call with --help for options
[2006-11-25 08:47:44] INFO  WEBrick 1.3.1
[2006-11-25 08:47:44] INFO  ruby 1.8.4 (2006-04-14) [i386-mswin32]
[2006-11-25 08:47:44] INFO  WEBrick::HTTPServer#start: pid=2564 port=3000

默认webrick服务器启用了3000端口,访问一下 http://localhost:3000 ,打开后可以看到如下之类的信息。
Welcome aboard
You’re riding the Rails!
About your application’s environment
点击查看:
Ruby version 1.8.4 (i386-mswin32)
RubyGems version 0.9.0
Rails version 1.1.6
Active Record version 1.14.4
Action Pack version 1.12.5
Action Web Service version 1.1.6
Action Mailer version 1.2.5
Active Support version 1.3.1
Application root X:/OpenSource/Ruby/rorweb
Environment development
Database adapter mysql

关于webrick服务器更多的信息可以访问 http://www.webrick.org/

8、写一个HelloRoR的Web程序
打开rorweb\app目录,可以看到四个子目录
controllers
helpers
models
views
一看就知道是什么作用了吧:)

仍在rorweb目录,运行 ruby script\generate controller HelloRoR 可以看到如下的创建信息
      exists  app/controllers/
      exists  app/helpers/
      create  app/views/hello_ro_r
      exists  test/functional/
      create  app/controllers/hello_ro_r_controller.rb
      create  test/functional/hello_ro_r_controller_test.rb
      create  app/helpers/hello_ro_r_helper.rb

创建一个app/views/hello_ro_r目录及三个文件

打开 hello_ro_r_controller.rb 进行编辑,增加内容后全部如下:

ruby 代码 
  1. class HelloRoRController < ApplicationController   
  2.  def index   
  3.   render_text "Hello RoR World"  
  4.  end  
  5.  def rails   
  6.   render_text "Hello Rails"  
  7.  end  
  8. end  

访问 http://localhost:3000/hello_ro_r/ 就可以看到Hello RoR World结果了
访问 http://localhost:3000/hello_ro_r/rails 就可以看到Hello Rails结果了

注意是 hello_ro_r 不是HelloRoR,默认是小写,并写大小写之间用_分隔了,要注意一下,如果要进行对应,就全部小写建立应用,如:
运行 ruby script\generate controller helloror ,这样就是生成 helloror_controller.rb 了,然后访问 http://localhost:3000/helloror/

其它:1.8.4与1.8.5的区别
1.8.4
win32-clipboard (0.4.0)
win32-eventlog (0.4.1)
win32-process (0.4.2)
windows-pr (0.5.1)
1.8.5
win32-clipboard (0.4.1)
win32-eventlog (0.4.2)
win32-process (0.5.1)
windows-pr (0.5.3, 0.5.1)

1.8.5的升级:gem install rails
Bulk updating Gem source index for: http://gems.rubyforge.org
Install required dependency activesupport? [Yn]  y
Install required dependency activerecord? [Yn]  y
Install required dependency actionpack? [Yn]  y
Install required dependency actionmailer? [Yn]  y
Install required dependency actionwebservice? [Yn]  y
Successfully installed rails-1.1.6
Successfully installed activesupport-1.3.1
Successfully installed activerecord-1.14.4
Successfully installed actionpack-1.12.5
Successfully installed actionmailer-1.2.5
Successfully installed actionwebservice-1.1.6
Installing ri documentation for activesupport-1.3.1...
While generating documentation for activesupport-1.3.1
... MESSAGE:   Unhandled special: Special: type=17, text="<!---->"
... RDOC args: --ri --op F:/OpenSource/RoR/Ruby/lib/ruby/gems/1.8/doc/activesupport-1.3.1/ri --quiet lib
(continuing with the rest of the installation)
Installing ri documentation for activerecord-1.14.4...
Installing ri documentation for actionpack-1.12.5...
While generating documentation for actionpack-1.12.5
... MESSAGE:   Unhandled special: Special: type=17, text="<!---->"
... RDOC args: --ri --op F:/OpenSource/RoR/Ruby/lib/ruby/gems/1.8/doc/actionpack-1.12.5/ri --quiet lib
(continuing with the rest of the installation)
Installing ri documentation for actionmailer-1.2.5...
Installing ri documentation for actionwebservice-1.1.6...
Installing RDoc documentation for activesupport-1.3.1...
Installing RDoc documentation for activerecord-1.14.4...
Installing RDoc documentation for actionpack-1.12.5...
Installing RDoc documentation for actionmailer-1.2.5...
Installing RDoc documentation for actionwebservice-1.1.6...

9、中文截取问题测试
http://my.opera.com/sawpad/blog/show.dml/235183
从以上地址拿到程序放到 rorweb\lib\ 目录下

它的示例里有问题,我回复了它,可以在程序里调用如下,凑合着用,至少不会乱码:

ruby 代码

 

  1. u = USCutter.new("GBK")   
  2. u1 = USCutter.new("GBK")   
  3. u2 = USCutter.new("GBK")   
  4. s = "we love 中文截取问题"  
  5. s1 = u.cut(s,0,10)   
  6. s2 = u1.cut(s,0,11)   
  7. s3 = u2.cut(s,0,12)   
  8. puts s1   
  9. puts s2   
  10. puts s3  

记得JavaEye上线时也是乱码问题,现在解决了的,原来我给Robbin写过用JavaScript来解决乱码的问题,不知道Robbin后来如何解决的,搜了一下,没有发现解决方案?

10、接下来就是连接数据库做一个完整的开发之类的,待续。。。

分享到:
评论
17 楼 luxel 2007-06-16  
好像体验一把TextMate...
16 楼 coolyzg 2006-11-30  
谢谢YuLimin,辛苦了
期待下篇
15 楼 YuLimin 2006-11-27  
beso 写道
茄子大哥,冤枉啊,我什么时候说“一个汉字算2个字母”了?
不过没关系,也许是个小误会,呵呵


我说的是显示在屏幕上的占位位置大小的意思,不要理解错了哦:)
eg:
XXYY
汉字
14 楼 qiezi 2006-11-27  
WebService在rails中已经有好的解决方案;

多数据库勉强支持;

大并发是个大问题,不过ruby的服务器以进程方式运行,所以服务器从一开始就得考虑并发问题,其它方面的并发不是这个版的合适问题;

报表统计我接触得不多,我想统计功能实现起来并不复杂吧,除非数据库设计问题,显示部分应该是可以利用最新的REST加上浏览器端生成;

缓存在rails中已经有实现,使用还算方便;

权限控制这东西说大就可以做大,说小也可以做得很小,在ruby中实现一个简单的权限控制并不是难事。
13 楼 together 2006-11-27  
ruby版缺少一些实践性和解决关键问题的文章,诸如事务、WEBSERVICE、多数据库、大并发、报表统计、缓存、权限控制等方面的。
12 楼 beso 2006-11-25  
茄子大哥,冤枉啊,我什么时候说“一个汉字算2个字母”了?
不过没关系,也许是个小误会,呵呵
11 楼 qiezi 2006-11-25  
beso 写道
茄子的办法真多。
我觉得javascript对中文的处理比较好,不知道它内部是怎么一回事?
下面代码可以直接在浏览器地址栏中执行:
javascript:alert("我爱我家".substring(0,1));

前面那么些方法不是都可以做到这个功能嘛,你说的一个汉字算2个字母,javascript的substring一样做不到。。。

======================
抱歉,看错了,是楼主说的。
10 楼 beso 2006-11-25  
javascript:alert("我爱我家".length);
则输出4
9 楼 beso 2006-11-25  
茄子的办法真多。
我觉得javascript对中文的处理比较好,不知道它内部是怎么一回事?
下面代码可以直接在浏览器地址栏中执行:
javascript:alert("我爱我家".substring(0,1));
8 楼 qiezi 2006-11-25  
YuLimin 写道
如果这样的话,那岂不是仍是无法解决平常所说的一个汉字算两个英文字母的这种截取的问题了?

并不是每种解决方案都适合所有问题的,老外搞出多字节支持已经不容易了,估计他们从来也没想过1个汉字算2个字母这个问题,新问题就想新的解决办法。这个问题我认为实现起来并不复杂,试着做了一下:
$KCODE="u"
def cut(str, start, len)
  cur = 0
  result = ""
  str.scan(/./) do |c|
    cur += (c.length == 1 ? 1 : 2)
    result << (cur > start && cur - start <= len ? c : "")
  end
  result
end
puts cut("abc中华人民共和国", 4, 4) == "中华"
puts cut("abc中华人民共和国", 1, 4) == "bc中"
puts cut("abc中华人民共和国", 0, 4) == "abc"
puts cut("abc中华人民共和国", 0, 20) == "abc中华人民共和国"
puts cut("abc中华人民共和国", 0, 17) == "abc中华人民共和国"
7 楼 YuLimin 2006-11-25  
如果这样的话,那岂不是仍是无法解决平常所说的一个汉字算两个英文字母的这种截取的问题了?
6 楼 qiezi 2006-11-25  
YuLimin 写道
"中华人民共和国abcde".chars.length
应当为19才对吧

"中华人民共和国abcde".chars[5,5]

应当说是得到“人民共”才行的啊

一个汉字要算两个字节。

我的控制台编码是UTF8。UTF8编码一个汉字最少3字节,加起来刚好26字节。

Chars方法返回一个Chars对象,其它操作都是交给这个对象来处理,它是按unicode来处理的,1个汉字算一个unicode字符,1个英文字符也是1个unicode字符。
5 楼 YuLimin 2006-11-25  
"中华人民共和国abcde".chars.length
应当为19才对吧

"中华人民共和国abcde".chars[5,5]

应当说是得到“人民共”才行的啊

一个汉字要算两个字节。
4 楼 qiezi 2006-11-25  
YuLimin 写道
谢谢qiezi,如果是中英文混合的话,要进行截取指定字符时会不会出现断字现象呢?

使用上面几种方法都不会出现这种问题.
$ irb
irb(main):001:0> $KCODE="u"
=> "u"
irb(main):002:0> "中华人民共和国abcde".split(//)
=> ["中", "华", "人", "民", "共", "和", "国", "a", "b", "c", "d", "e"]
irb(main):003:0> "中华人民共和国abcde".length
=> 26

我的控制台是UTF8编码的,这个字符串编码就是UTF8编码,从它的length可以看到,UTF8编码一般汉字最短3字节。

下面的测试是在rails 1.2rc1上进行的:
$ script/console
Loading development environment.
>> $KCODE="u"
=> "u"
>> "中华人民共和国abcde".chars.length
=> 12
>> puts "中华人民共和国abcde".chars[5,5]
和国abc
=> nil

完全可以放心使用。不过要注意chars是生成一个新对象,length调用成本也不低,尽量不要重复调用它们,以免效率过低。
3 楼 YuLimin 2006-11-25  
谢谢qiezi,如果是中英文混合的话,要进行截取指定字符时会不会出现断字现象呢?
2 楼 qiezi 2006-11-25  
中文截取问题,只要以下步骤就可以了:
1、$KCODE = "u"
2、"中华人民共和国".split(//)[0,2].join("")

或者是利用iconv,不需要设置$KCODE
utf16_str = Iconv.conv("utf16le", "utf8", "中华人民共和国")
utf8_str = Iconv.conv("utf8", "utf16le", utf16_str[0, 2 * 2])
由于utf16每个字符占2字节,所以要把截取的长度乘2。

rails对truncate打了补丁,所以只需要设置$KCODE = "u",再使用truncate就不会截断汉字,不过使用[]还是会截断。

rails 1.2以后只需要设置$KCODE = "u",再使用"中华人民共和国".chars[0,2]就可以正确截取2个汉字。
1 楼 pedestrian_I 2006-11-25  
不错,对于新手有帮助,最近打算看看ROR,期待下文。

相关推荐

    RoR,十分钟做Blog

    【RoR,十分钟做Blog】这篇教程主要介绍了如何使用Ruby on Rails(RoR)框架在NetBeans IDE上快速创建一个简单的博客程序。RoR是一个基于MVC(模型-视图-控制器)架构的Web开发框架,它使得开发过程更加高效且简洁。...

    ror

    NULL 博文链接:https://xuxiangpan888.iteye.com/blog/266696

    RoR性能优化经验谈

    RoR(Ruby on Rails)是一种流行的开源Web开发框架,以其高效和简洁的代码著称。然而,随着网站规模的增长,性能优化成为必不可少的环节。在本文中,我们将探讨一些RoR性能优化的关键方面,主要基于JavaEye网站在...

    ror中文资料

    **Ruby on Rails(简称RoR)中文资料** Ruby on Rails(RoR)是一个基于Ruby编程语言的开源Web应用框架,遵循MVC(Model-View-Controller)架构模式,旨在简化Web开发过程,提高开发效率。RoR强调“约定优于配置”...

    神经网络ror resenet模型

    **神经网络Ror ResNet模型详解** 在深度学习领域,ResNet(残差网络)模型是具有里程碑意义的创新,由He et al.在2015年提出。该模型解决了深度神经网络训练中的梯度消失问题,允许构建非常深的网络结构。而“Ror”...

    RoR选题方向—源代码

    Ruby on Rails(RoR)是一种基于Ruby语言的开源Web应用程序框架,它遵循MVC(Model-View-Controller)架构模式,旨在简化Web开发过程。在这个选题方向中,我们主要探讨的是与RoR相关的源代码分析和学习。源代码是...

    ror实例

    Ruby on Rails(简称RoR或Rails)是一种基于Ruby语言的开源Web应用框架,它遵循Model-View-Controller(MVC)架构模式,旨在提高开发效率并提供简洁、优雅的代码结构。"ror实例"可能指的是在学习或实践中,通过创建...

    初探ROR

    **初探ROR** Ruby on Rails(简称ROR)是一个基于Ruby编程语言的开源Web应用程序框架,它遵循MVC(模型-视图-控制器)架构模式,旨在促进开发过程的简洁性和效率。Ruby on Rails的核心理念是“Don't Repeat ...

    ROR安装必备所有架包

    在Ruby on Rails(ROR)开发环境中,安装和配置正确的依赖包是至关重要的。这个压缩包包含了一系列用于ROR框架的基础组件,但不包括Ruby本身。让我们深入了解一下这些包的作用和重要性。 首先,`actionpack`是Rails...

    RoRBlog 基于RoR的博客系统

    基于RoR的博客系统,代码风格简单清晰,前后太完善,适合初学者。

    ROR 文件的上传与下载

    ### ROR 文件的上传与下载:深入解析与实践 在Ruby on Rails(简称ROR)框架下,处理文件的上传与下载是一项常见的需求,尤其是在构建包含媒体内容的应用程序时。本文将基于给定的文件信息,详细阐述如何在Rails...

    Windows 上搭建 ROR环境

    ### Windows上搭建Ruby on Rails(ROR)环境详解 #### 一、引言 随着Web开发技术的不断发展,Ruby on Rails(简称Rails或ROR)作为一种高效、简洁且优雅的Web开发框架,受到了广大开发者的青睐。然而,在Windows...

    ROR绿色最新环境(2013/3/10)

    ROR环境 Ruby version 1.9.3 (java) RubyGems version 1.8.24 Rack version 1.4 Rails version 3.2.12 JavaScript Runtime therubyrhino (Rhino) Active Record version 3.2.12 Action Pack version 3.2.12 ...

    ROR环境配置

    在IT行业中,Ruby on Rails(简称ROR)是一款基于Ruby语言的开源Web应用程序框架,它遵循MVC(Model-View-Controller)架构模式,旨在简化Web应用开发过程,提高开发效率。本文将深入探讨如何配置ROR开发环境,以及...

    freemis 基于ror框架的mis

    3. **易用性**:RoR的模板引擎和视图层设计使得FreeMIS的用户界面友好,用户体验良好。 4. **社区支持**:RoR拥有庞大的开发者社区,这意味着FreeMIS可以利用众多开源插件和库,以及丰富的文档和教程资源。 5. **...

    javarebel 用JAVA和ROR一样方便测试

    破解版本的JAR包,放到本地磁盘,ECLIPUS直接用,到JVM设置直接加 -noverify -javaagent:D:\javarebel.jar

    ror文本编辑插件

    "ror文本编辑插件"显然是一种专为Rails应用设计的工具,旨在提升用户在网页上编辑文本的体验。这个插件可能包含丰富的功能,如富文本编辑、格式化选项、图片上传等,使得内容创建更加便捷和直观。 Ruby on Rails是...

    Ruby on Rails 初体验--北大青鸟教师专题讲座PPT

    通过一个简单的通讯录应用为例,可以快速体验RoR的开发流程:首先,新建RoR项目并设置名称和位置;接着,进行数据库配置,通常会自动生成与项目名对应的数据库;然后,利用RoR的命令生成数据库,项目结构会自动建立...

    机遇ROR 的图书管理系统

    《机遇ROR的图书管理系统》是一份以Ruby on Rails(简称ROR)技术为核心,旨在构建高效、便捷的图书管理解决方案的学习资料。Ruby on Rails,是基于Ruby编程语言的开源Web应用框架,它遵循MVC(Model-View-...

Global site tag (gtag.js) - Google Analytics