zoukankan      html  css  js  c++  java
  • ruby on rails入门基础

    最近有想学一下ruby on rails的冲动,JAVA这东西的确很复杂,做一个系统要消耗相当多的人力与时间,开始厌倦了这种开发方式。之前一直有想学ror的,但是时机不成熟,没那么多的时间与精力,最近突然有了这个决定,那就试一下吧。
    虽然早就有了准备,但是搞ror并不是想的那么容易,其基本环境的搭建也不简单,概念也比较多,开始花了几天时间看了一下ruby的基本语法,几天以后发现这样不行,太慢了,于是开始尝试搞个ror的例子,然后就接触了一些新的概念了。基本安装过程大概搞了两三天吧,网上说法很多,但说得都不全,因此多花了些时间,下面把这个基本的入门过程写下来,做个简单的回顾吧。
    一、安装ruby、rubygems
        在http://rubyinstaller.org/可以下载一个针对windows平台的ruby安装文件,如现在使用的是rubyinstaller-1.9.1-p378-rc2.exe,这个安装文件自带了rubygems,所以不必单独下载,如果机子已经装过了,可以通过gem update --system  命令进行升级。
    二、安装rails
        经过第一步之后,就可以在windows控制台中使用ruby命令了,如ruby -v,可以显示当前ruby的版本号,直接输入gem install rails -y就会自动搜索网络安装rails,也可以通过gem update rails更新rails。
    三、安装数据库
        一般例子使用sqlite数据库,这个数据库有点类似HSQLDB,是一个内存数据库,使用很简单,先通过gem install sqlite3-ruby,然后在http://www.sqlite.org/download.html下载sqlite-3_5_6.zip & sqlitedll-3_5_6.zip两个文件,将其解压得到一个exe文件与一个dll文件,将其放入ruby安装目录的bin目录下即可。

    鉴于mysql的流行,有必要讲一下mysql的安装过程,首先执行gem install mysql命令,然后将mysql安装目录的bin/libmySQL.dll文件复制到ruby安装目录的bin目录下(还有一个步骤与具体的应用相关联,见后面的步骤)。

    尽管如此,试用的时候还是发现连接mysql时服务器一点都不稳定,多刷新两次服务器就停了,也没看见报什么错,而且在使用rake db:migrate时也会出错,因此在windosw平台学习的时候最好还是使用sqlite3,至于连接mysql为什么不稳定,目前还不清楚,但至少mysql(2.8.1)版本的驱动是很不稳定的。原因:
    引用

    the Ruby MySQL gem currently does not support MySQL 5.1


    后来在网上偶然看见过这种情况,实际上mysql的libmySQL.dll版本的问题,不能用最新的版本。附件上传了一个,应该没有问题,把libmySQL.dll文件放在ruby/bin目录下。

    不过这个mysql gem 存在字节编码问题,所以后来有了更好的mysql2,这个mysql2在linux下安装相对简单,如果要在windows下使用,需要先安装devkit,然后才能安装mysql2,这方面的资料可在网上找找。
    四、创建应用

        基本环境建好后,就可以做一个简单的应用了:
        1.建一个ruby的工作目录,如rubywork,通过windows控制台命令进行其目录下,然后通过rails demo命令创建当前工作区的基本文件。
        2.启动服务,通过demo>ruby script/server webrick启动web服务,可用ctro+c关闭服务,其中webrick是一个ror的web服务器,这个服务器主要在开发环境中使用,实际应用中可使用mongrel。值得一提的在script目录中,包含了许多有用的脚本。启动成功后可看见以下图片:



    webrick也是属于测试开发的时候使用,性能肯定好不了的,在windows平台下,推荐使用mongrel,但是目前的mongrel好像并不支持ruby1.9,所以用不了。
        3.创建一个简单的控制器,通过demo> ruby script/generate controller Say创建一个叫Say的控制器,通过这个命令,生成了一个控制器需要的大部分文件,只需要对少量的文件进行更改即可,首先来看生成的demo>app>controllers>say_controller.rb文件:

    Ruby代码 复制代码 收藏代码
    1. class SayController < ApplicationController   
    2. end  
    class SayController < ApplicationController
    end
    


    上面的代码可以看出命令生成了一个空的控制器,现在需要做的就是向其添加相应的操作代码,如添加一个跳转方法hello,可以这样:
    Ruby代码 复制代码 收藏代码
    1. class SayController < ApplicationController   
    2.   def hello   
    3.       @time=Time.now   
    4.   end  
    5. end  
    class SayController < ApplicationController
      def hello
          @time=Time.now
      end
    end
    

    这个hello对应相当于一个Action方法,这样就可以通过http://localhost:3000/say/hello来访问这个方法了,但是这个访问这个方法后该往里跳转呢,因此还得增加一个erb文件才可以,默认情况下,ror会访问demo>app>views>say目录下与controller中的action方法相同的erb文件,即hello.erb,由于命令没有生成此文件,所以必须手动添加此文件,文件内容如下:

    Html代码 复制代码 收藏代码
    1. <html>  
    2. <head>  
    3. <title>  
    4. Hello Rails   
    5. <%=@time%>  
    6. </title>  
    7. </head>  
    8. <body>  
    9. Hello Rails   
    10. </body>  
    11. </html>  
    <html>
    <head>
    <title>
    Hello Rails
    <%=@time%>
    </title>
    </head>
    <body>
    Hello Rails
    </body>
    </html>
    


    这样访问http://localhost:3000/say/hello时,就会显示相应的Hello Rails了。

    还有一个地方需要注意,就是关于数据库的配置方法,上面讲了,与数据库相关联的文件实际上是在具体的应用中的,更准确的说,是在应用目录>config>database.yml文件中,此文件就是数据库连接的配置文件,如果使用sqlite3,则内容如下:

    引用

    # SQLite version 3.x
    #   gem install sqlite3-ruby (not necessary on OS X Leopard)
    development:
      adapter: sqlite3
      database: db/development.sqlite3
      pool: 5
      timeout: 5000

    # Warning: The database defined as "test" will be erased and
    # re-generated from your development database when you run "rake".
    # Do not set this db to the same as development or production.
    test:
      adapter: sqlite3
      database: db/test.sqlite3
      pool: 5
      timeout: 5000

    production:
      adapter: sqlite3
      database: db/production.sqlite3
      pool: 5
      timeout: 5000


    如果使用的mysql,则内容如下:

    引用

    development:
      adapter: mysql
      database: development
      username: root
      password: 200596
      pool: 5
      timeout: 5000

    # Warning: The database defined as "test" will be erased and
    # re-generated from your development database when you run "rake".
    # Do not set this db to the same as development or production.
    test:
      adapter: mysql
      database: test
      username: root
      password: 200596
      pool: 5
      timeout: 5000

    production:
      adapter: mysql
      database: production
      username: root
      password: 200596
      pool: 5
      timeout: 5000


    需要注意的是,development,test,production对应的database最好是分别对应不同的数据库。

    这样一个基本的ror工程就完成了。
    • 大小: 30.4 KB
  • 相关阅读:
    第九章 监控系统zabbix深入应用监控
    二叉树的迭代遍历
    .NET程序设计实验2
    大数据分析——sklearn模块安装
    C#实现找二维数组中的鞍点
    Javascript——DOM简介
    前端基础——HTML(一)
    Java基础(一)
    前端基础——CSS(一)
    如何配置网络,使内网和WiFi同时使用
  • 原文地址:https://www.cnblogs.com/zhouwenwu/p/2364960.html
Copyright © 2011-2022 走看看