Ruby on Rails起步

    技术2026-06-21  3

    在三种主要的动态语言中Perl、Python和Ruby中,鉴于下学期的软工需要一个OO的MVC架构,我还是选择了Ruby on Rails,做一个在线的考试系统应该还是足够的。

     

    但是对我初学者不巧的是rails的新版本到了3.0.4,ROR的有些语句略有不同,还是没有听过来人的建议,没有倒回2.3.x,就从Rails3开始了。

     

    一上手,跟书上的代码有些许不同。(我的是windows下的rails环境)

    1、创建一个项目过去是 >rails projectname ,而现在是 >rails new projectname。

    2、rails默认设置的数据库是sqlite3,但是1.9的ruby没有合适的sqlite3,一种解决是安装sqlite3-ruby-1.3.3,但是好像后面还是会出问题,而我是在

    D:/Ruby192/lib/ruby/gems/1.9.1/gems/railties-3.0.4/lib/rails/generators/rails/app 里找到app_generator.rb

    在 class_option :database,           :type => :string, :aliases => "-d", :default => "sqlite3", 这一行把default的数据库改成mysql,因为机子上本来就是配置了mysql。

    3、创建了项目之后,进入项目目录,开启服务器的语句

    原来:>ruby script/server

    现在一看,傻眼了,script下就rails一个文件

    现在:>rails server 或者 >rails s

     

    4、就算这样还是会出错,好象是说mysql2的神马问题

    于是参考网上意见,先在目录下执行 >bundle install

     

    5、终于可以运行服务器了,修改下controller下的脚本,添加index动作,访问这个controller,结果是mysql无密码访问被拒绝= =。废话,没密码谁让你访问啊,于是修改了database.yml的密码。

    但是依然不行,这次的错误是 no route matches,继续狗狗下,正解是把config/routes.rb中的

    # match ':controller(/:action(/:id(.:format)))'  注释去掉,但是上面有句注释:This is a legacy wild controller route that's not recommended for RESTful applications.

     

    简而言之,把许多的ruby脚本执行换成了rails的命令吧。

     

     

    这样算是终于可以了,真是才开始呢。。。

     

    -----------------------------继续----------------------------------------------------------------

    P.S. 我的学习是基于the ruby programming language和ruby on rails: up and running这两本书的

     

    1、rake ad:migrate更改为  rake db:migrate 

    以及创建的数据表,记录migration信息的表由schema_info变为schema_migrations。id字段是Rails自动创建的。

     

     

    2、ruby script/console更改为rails console或者rails c,其实就是启动了irb并载入了项目信息。

     

    3、在ror:up and running这本书的例子中,对于创建新对象irb返回的内容不一样,好像以前会分配一个值,但是现在新对象的属性通通为nil

     

     

    最新回复(0)