第一次ROR之旅


第一次ROR之旅
1、创建一个rails目录
rails mybook
2、,进入 mybook 目录。运行 ruby script\server
这条命令是运行 script 目录下的 server 命令来启动 webrick 服务器
3、打开浏览器 ,输入网址http://127.0.0.1:3000/
如果不出以外应该可以看到一个ROR的页面
4、编辑 controller 类
打开新的 DOS 命令行,运行 ruby script\generate controller MyTest
c:\ruby\work\mybook\app\controllers 目录中将生成一个包含 MyTestController 类定义骨架的名为 my_test_controller.rb 的文件   c:\ruby\work为我的工作路径
鼠标右键点击此文件,选择”edit” 打开编辑此文件
class MyTestController < ApplicationController
  def index
    render_text "Hello world"
    end
end

在浏览器中访问 http://127.0.0.1:3000/My_Test/,
这下好了,错误来了

错误一:MissingSourceFile in My testController#index
出现原因:心版本的rails,默认是和sqlite3绑定的,当然需要装sqlite3了,在命令行中输入:gem install sqlite3-ruby进行安装
还以为这样就万事大吉了,重新启动 webrick 服务器,刷新http://127.0.0.1:3000/My_Test/ 错误以一种新的面孔出现了

错误二:This error occurred while loading the following files:
   sqlite3/driver/dl/driver
   sqlite3/driver/dl/api
原因:缺少   sqlite3
解决:将下载的sqlite3.dll和sqlite3.exe拷贝到ruby\bin目录下,使用命令ruby script/server重启WEBrick,刷新http://127.0.0.1:3000/My_Test/
sqlite3.dll和sqlite3.exe下载地址:http://www.sqlite.org/download.html
再次以为这样就行了,错误在继续中……

错误三:NoMethodError in My testController#index
undefined method `render_text' for #<MyTestController:0x37c8d48>
RAILS_ROOT: C:/ruby/work/mybook
app/controllers/my_test_controller.rb:3:in `index'
原因:rails版本支持的问题
解决:
将class MyTestController < ApplicationController
  def index
    render_text "Hello world"
    end
end
修改为:class MyTestController < ApplicationController
  def index
        render:text=> "Hello world"
  end
end
需要修改的部分为红色显示的字体,不知道为什么rails的版本支持会出现这种问题……纳闷中……

不过到此为止,终于可以开始ROR之旅了……
心里那个high啊……继续玩转ROR去……


ps:关于rails 是如何将 url 和控制器中的函数做简单映射的一些解释,在运行 ruby script\generate controller MyTest 的时候, rails 做了一些默认的假设。 MyTest 对应的 controller 文件是 my_test_controller.rb, 文件中控制器类名是 MyTestController,而 url 映射是 /My_Test/ .
这些默认规定的好处是:我们不再需要编辑复杂的配置文件,只要对相应的文件做编辑就可以了。我们只需要关注程序逻辑,而不是其它什么,这就是 rails 设计原则中的“习惯约定优于配置”。
另外也有一点 ruby 动态语言的好处,这点是 java 所无法办到的。在编辑完 controller 后,重新刷新页面,就可以使程序生效。对于编译型的 java 语言来说,不重新编译,重新启动服务器是无法做到这点的。Rails 开发的易用性可见一斑了…………

你可能感兴趣的:(c,浏览器,sqlite,Ruby,Rails)