zoukankan      html  css  js  c++  java
  • Agile Web Development with Rails 读书笔记 (一)

    这本书看了一段时间,一直没有上手,今天刚才北京回来,新的项目需要提供一个原型,感觉比较适合ROR的开发方式,决定把《Agile Web Development with Rails》中的例子,走一遍,看一下开发的效果。

    由于以前很少做WEB程序,做的也基本上是改,而且也很少使用MySql数据库,因此在调试的过程中,的确遇到了很多低级的错误,记录下来,提个醒吧,希望对大家有点帮助。

    第1~5章

    安装Ruby

    下载地址:http://rubyinstaller.rubyforge.org

    Mysql管理工具:ems sql manager 2005

    下载和安装Ruby和MySql还是比较简单的,由于书中没有提到Mysql的一些管理,最好还是在Google上查看写资料,这样上手能更好一点。

    在ROR中常用命令的需要注意的问题

    大小写

    ruby中所有的命令中,命令动词不区分大小写,但是参数则区分大小写

    例如 Ruby –v和ruby –v都可以执行,但是ruby –V就不可以正确执行了。

    显示Ruby的版本的命令

    ruby –v

    执行成功后屏幕显示如ruby 1.8.5 <2006-12-15 patchlevel 12> [i386-mswin32]

    解释:ruby的版本为1.8.5 的mswin32版本

    显示RubyGems版本

    gem --version

    显示为但前版本如0.9.2

    RubyGems是一个方便而强大的Ruby程序包管理器( package manager),类似RedHat的RPM.它将一个Ruby应用程序打包到一个gem里,作为一个安装单元。

    更新Rails

    gem update rails

    可以自动更新本地的Rails,并依次提示如下更新,需要用户确认

    Activesupport
    Activerecord
    Actionpack
    Actionmailer
    Actionwebservice

    更新Rails是很重要的,这个命令也很简单,程序的升级和维护也是十分方便的。

    显示帮助

    ruby –h
    gem –help

    创建应用程序

    在命令行依次中执行

    E:
    CD Code
    rails test

    会在e:\Code目录中创建一个test目录,系统会在该目录中创建该应用程序的所有目录。

    启动Webrick服务

    进入到应用程序所在目录,执行ruby script/server即可。

    例如:

    E:\
    CD code
    CD Test
    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
    [2007-03-13 11:08:52] INFO  WEBrick 1.3.1
    [2007-03-13 11:08:52] INFO  ruby 1.8.5 (2006-12-25) [i386-mswin32]
    [2007-03-13 11:08:52] INFO  WEBrick::HTTPServer#start: pid=3232 port=3000
    表示服务已经正常运行。

    终止服务在CMD窗口执行 Ctrl-C即可。

    创建一个控制器


    ruby script/generate controller 控制器名称
    例如 ruby script/generate controller Say
    http://localhost:3000/
    该地址会列出关于Ruby的一些文档和帮助

    语法举例

    编写action

    class SayController < ApplicationController
      def hello
      @time=Time.now
    end
    end
    RHTML-动起来
    <html>
      <head>
        <title>Hello,Rails!</title>
      </head>
      <body>
        <h1>Hello from Rails!</h1>
        <li>Addition:<%= 1+2 %></li>
        <li>Concatenation:<%= "cow"+"boy" %></li>
        <li>Time in one hour:<%= 1.hour.from_now %></li>
        <% 3.times do %>
          Ho!<br/>
        <% end %>
        <% 3.downto(1) do |count| %>
           <%= count %>   <br/>
        <% end %>
        EMail=<%= h("Ann & Bill <frazers@isp.email>") %>
        </br>
        It is now <%= Time.now() %>
      </body>
    <html>

    有意思的是数字1也是对象,存在很多的属性和方法。

    另外< > 要紧跟着 %,否则系统会认为是错误的。

    另外%也要紧跟着=号,否则也会报错。

    链接到另外的网页
    <%= link_to "hello", :action => "hello" %>
    第一个参数指向超链接文本,第2个参数告诉Rails如何生成超链接
    :Action是Ruby的一个符号

    常见问题
    RHTML中文乱码

    RHTML和RB文件应该保存成UTF-8的格式,否则中文显示为乱码,下边为网上的一些解决办法,我试验了一下反而觉得不好用。

    (转)
    Ruby on Rails 学习:解决中文乱码问题
    初学Rails,简单的做了一个例子,发现存在中文问题。
    大致中文问题归类如下:
    1、页面无法显示中文,产生中文乱码
    2、Mysql数据库采用utf8后,页面采用utf8,数据库保存是乱码,但页面显示正常。
    3、时间格式在页面上的中文显示产生乱码。
    打开:application.rb:修改代码如下显示:
    1 class ApplicationController < ActionController::Base
    2 before_filter :set_charset
    3 def set_charset
    4 @headers["Content-Type"] = "text/html; charset=utf-8"
    5 end
    6 end
    同时对页面(*.rhtml)上进行增加编码控制:
    <meta http-equiv="Content-type" content="text/rhtml; charset=utf8" />
    同时在保存页面时,进行编码转换成utf8格式。
    做完以上工作的话,利用mysql数据库客户端工具Navicat查看数据库,你会发现数据库中保存的中文数据会出现乱码,因此需要进一步处理:
    1、建数据库时采用utf8编码进行建库,同时建表或者导表时要注意采用utf8编码。
    2、采用Navicat连接数据库时在Advanced Settings中选择Encoding编码为utf8,同时取消Use MySQL character set的默认选项,再进行连接。
    进行以上设置,将会在数据库中显示出正常的中文。同时页面上显示也会是中文,但你会发现对于时间的显示上仍然存在一些小问题。因此在输出时间时需要进行(original_date.strftime("%Y/%m/%d"))转换格式。

    第6章

    MySql

    启动Mysql命令
    Mysqld

    安装Mysql为服务
    Mysqld-nt –install 安装
    Mysqld-nt –remove 卸载

    执行MySql脚本

    mysql -h 服务器  -u  用户 -p密码 <sql脚本

    数据库脚本
    CreateDatabase
    create database depot_development;
    create database depot_test;
    create database depot_production;
    grant all on depot_development.* to 'test'@'localhost';
    grant all on depot_test.* to 'test'@'localhost';
    grant all on depot_production.* to 'prod'@'localhost' identified by 'mysql';
    CreateTable
    drop table if exists products;
    create table products(
    id                  int                             not null auto_increment ,
    title               varchar(100)              not null,
    description      text                           not null,
    img_url           varchar(200)              not null,
    price              decimal(10,2)            not null,
    primary key (id)
    );

    这个是书中的脚本,觉得有点问题,大家试试看吧。

    配置数据库

    修改config/database.yml文件内容

    development:
      adapter: mysql
      database: depot_development
      username: root
      password: mysql
      host: localhost

    test:
      adapter: mysql
      database: depot_test
      username: root
      password: mysql
      host: localhost

    production:
      adapter: mysql
      database: depot_production
      username: root
      password: mysql
      host: localhost

    在调试的过程中,总是说/usr/lib/ruby/1.8/yaml.rb:133:in `load': syntax error on line 16, col 2:这个错误,经过Google后才知道,所有的:后边必须有一个空格,否则就报错,真是晕。

    创建脚手架

    ruby script/generate scaffold Product  Admin

    Product代表模型名称,采用大小写混合的方式
    Adimin代表控制器名称,采用大小写混合的方式


    这些就是今天的试验了,总算弄出来,例子中的真确界面,程序也是正确执行了,感觉上手还是比较快的,在使用中发现的问题在网络上基本上都可以查到,耽误时间的地方主要是因为不熟悉ROR和MySqL上面了,还有就是ROR的一些默认配置文件中的空格问题,刚开始的时候地区很蒙,呵呵,剩下等更加详细的使用了,到此第6章,还是没有完,差一点,明天来。
  • 相关阅读:
    MySQL优化
    MySQL 的 SQL 操作
    笔记本电脑同时使用两个网络
    top
    logrotate
    正则表达式学习总结
    HttpClient parameter 和body 传输同时进行
    Node.js背景
    前后端分离的理解
    shiro 的subject 以及Context 对象的具体的含义。
  • 原文地址:https://www.cnblogs.com/Duiker/p/673311.html
Copyright © 2011-2022 走看看