ruby入门--linux/windows下的安装、代码开发及rails实战


公司有项目组进行系统重构,采用了Ruby On Rails框架,我也抽出时间学习了一下,并对几个原来用Java开发的定时任务、消息监听进行了ruby改造,学习过程中主要参考两本书:Programming Ruby中文版(第二版)》 、Ruby on Rails教程》,开发工具:vim、RubyMine。


安装


Linux下:安装RVM和GEM后,之后所有的安装,都可以交给RVM和GEM了,安装RVM默认会装好GEM。

(1)curl -L https://get.rvm.io | bash -s stable

(2)source /etc/profile.d/rvm.sh ,这个脚本的目的是把rvm相关加入$PATH路径

安装完毕后界面如下(这个是从github下载代码,国内非常慢,多尝试几次):

ruby入门--linux/windows下的安装、代码开发及rails实战_第1张图片


安装RVM之后,安装ruby组件:

(1)安装ruby:rvm install ruby

这一步rvm会帮我们自动安装很多linux依赖包(如果linx本身没有的话),如果自动装不上,也可以根据屏幕提示收到安装,比如可能有提示进行如下安装:

yum install -y libyaml-devel autoconf gcc-c++ readline-devel zlib-devel openssl-devel automake libtool bison

网速不好,机器太烂(比如我的单CPU1G内存虚拟机),可能会花很多时间(比如2个小时),先有个心理准备

(2)安装rails:gem install rails

输入ruby -v ,显示ruby的版本,可以看到ruby已经装好。

我们也可以通过which ruby,查看ruby程序的位置。之所以直接输入ruby就能运行,是因为rvm已经把ruby加到$PATH环境变量中了。

我们输入echo $PATH,可以看到$PATH环境变量中已经包含ruby的路径了,如下:/usr/local/rvm/bin 。


HelloWorld


使用irb,写出第一行代码:puts "Hello, World!"

也可以编辑一个文件:test.rb,内容也只有一行:puts "Hello,World",然后再命令行运行:ruby test.rb,可以看到输出了正确的结果。

我们也可以这样设置test.rb,内容如下:

#!/usr/local/rvm/bin/ruby

puts "Hello,World"

然后再命令行给test.rb可执行的权限:chmod 777 test.rb,然后我们在命令行输入:./test.rb,可以看到,输出了正确的结果。


Mysql devel&client组件


(1)yum -y install mysql-devel

由于我的rhel6.2机器yum下面有错误的.repo文件,导致我一直连不上yum源服务器,执行了如下操作:

cd /etc/yum.repos.d/

rm -fr 无用的.repo文件

yum clean all

vim /etc/yum.repos.d/rhel-source.repo(这个文件的内容如下)

[rhel-source]
name=Red Hat Enterprise Linux $releasever - $basearch - Source
baseurl=http://192.168.1.11/yum/
enabled=1
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release

[rhel-source-beta]
name=Red Hat Enterprise Linux $releasever Beta - $basearch - Source
baseurl=ftp://ftp.redhat.com/pub/redhat/linux/beta/$releasever/en/os/SRPMS/
enabled=0
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-beta,file:///etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release


(2)gem install mysql2

经过以上两步,就可以连接mysql数据库了,例子代码如下:

require 'mysql2'
class Test
        def initialize
        @db = Mysql2::Client.new(:host => "192.168.211.245",
                                        :port => 3306,
                                        :username => "mysql",
                                        :password => "mysql",
                                        :database => "yitian_b2c_db")
                puts "a"
        end
end
if __FILE__ == $0
        test = Test.new
end


定时任务组件 rufus-scheduler


支持cron表达式,参考网址:http://www.cnblogs.com/fantiantian/archive/2013/10/26/3388367.html

先安装:gem install rufus-scheduler


log4r


require 'logger' 就可以使用了,参考网址:

http://www.360doc.com/content/12/0203/17/33776_183928682.shtml


xml操作


例子代码如下:

buffer = "";
x = Builder::XmlMarkup.new(:target => buffer, :indent => 1)
x.instruct! :xml,:version => '1.0',:encoding =>'UTF-8'
x.comment! "书本信息"
x.library("shelf" => "Recent Acquisitions") {
x.section("name" => "ruby"){
x.book("isbn" => "0672310001"){
x.title "Programming Ruby"
x.author "Yukihiro"
x.description"Programming Ruby-
The Pramatic Programmer's Guide"
}
}
}
puts buffer
fh = File.new("xml.xml","w")
fh.puts buffer
fh.close


参考网址:

http://builder.rubyforge.org/

http://developer.51cto.com/art/200912/171073.htm

http://blog.csdn.net/leaf1984zh/article/details/5652728


hessian


安装hessian:gem install hessian2

hessian代码示例:

require 'hessian2'
client = Hessian2::HessianClient.new(url)
client.xxx


程序完成及部署


源代码下载地址:http://pan.baidu.com/s/1i3unFXN

历时3天,完成我的第一个ruby程序,是改写的一个定时xml生成程序,干的不错!

一点小经验积累,如下:

initialize里面,打开数据库连接,是不可取的。如果程序执行很长时间,下次来用这个连接时,可能已经关闭了,最好用时open,用完close,不知道ruby里面有没有连接池的概念,可以进一步提高性能;

测试环境实践发现,hessian协议性能貌似低于dubbo协议,大约dubbo 2-3倍于 hessian,这个程序是2.6倍,很简单的请求,平均dubbo一次是4-5毫秒,hessian一次是11-12毫秒;
生产环境实际运行,hessian协议性能貌似和dubbo协议基本一致,运行了约20万次,总计消耗时间7分钟和8分钟的区别。


RabbitMQ的Ruby客户端:bunny


安装:gem install bunny


开始Rails之旅


推荐文章:http://railstutorial-china.org   有这个可以说足够了。


sqllite


linux机器可能没有安装Sqllite-devel,安装一下吧:yum install sqlite-devel


JavaScript服务器解释引擎


linux机器可能没有安装JavaScript的服务器解释引擎,安装一下吧:gem install execjs    gem install therubyracer,貌似这两步之后也不行,我的机器是REHL6.2,需要安装node.js才行,步骤如下:

wget http://nodejs.org/dist/v0.10.5/node-v0.10.5.tar.gz
tar xfv node-v0.10.5.tar.gz
cd node-v0.10.5
./configure
make
make install

参考文章:http://www.cnblogs.com/qiuliang/archive/2013/04/29/3050396.html


Git


http://blog.csdn.net/puma_dong/article/details/37915185


建立一个Raise项目并推送到GitHub


可以完全参考教程: http://railstutorial-china.org/chapter1.html#section-1-2-3

发布到云部署平台heroku


heroku.com注册一个账户
wget https://toolbelt.heroku.com/install.sh --no-check-certificate
chmod +x install.sh
./install.sh
echo 'PATH="/usr/local/heroku/bin:$PATH"' >> /etc/profile
通过以上步骤,安装完成heroku的linux客户端,下面开始部署:

heroku login
cd /data/ruby/rails_project/first_app
heroku create
注意:执行这些命令,会自动把~/.ssh/id_rsa.pub里面的公钥,写到您的heroku账户的SSH Keys里面,如果有过ssh重新生成等,需要到账户里面更新。貌似heroku和github用的是一个公钥。
下面,我们发布程序:git push heroku master ,正常的话,已经部署成功了,我的url如下:
http://damp-citadel-7023.herokuapp.com/
 

使用scoffold快速建立一个用户微博程序


学习网址: http://railstutorial-china.org/chapter2.html
演示网址: http://mighty-anchorage-9820.herokuapp.com/users

演示从头到尾建立一个大型的示例程序


学习网址: http://railstutorial-china.org/chapter3.html
演示网址: http://salty-lowlands-9048.herokuapp.com/


Windows下安装


rubyinstaller


安装包下载地址:http://pan.baidu.com/s/1i3unFXN

官网下载:http://rubyinstaller.org/downloads

执行rubyinstaller-2.0.0-p353-x64.exe,进行安装,安装完毕后,cmd里面执行:ruby -v,显示版本号,说明ruby安装成功;

执行gem -v,显示版本号,说明RubyGems(Ruby程序包管理器)也已经被默认安装好了;


DevKit


安装DevKit-mingw64-64-4.7.2-20130224-1432-sfx.exe,解压到一个固定的位置,使用后不能变换位置,更多参考:

https://github.com/oneclick/rubyinstaller/wiki/Development-Kit

步骤大致如下:

1) 将下载 DevKit 解压到 D:\DevKit 目录。
2) 打开 CMD 窗口,进入 D:\DevKit 目录,输入ruby dk.rb init 。#生成config.yml,这里会检查将要添加DevKit支持的Ruby列表,只支持通过RubyInstaller安装的Ruby。
3) 输入 ruby dk.rb install  #开始安装。
4) 输入 ruby dk.rb review  #检查要添加DevKit支持的Ruby列表是否有误,可以略过。
5) 输入 gem install rdiscount --platform=ruby 。#这一步只是验证DevKit是否安装成功,如果能安装rdiscount成功说明安装DevKit成功,也可以不做。


Rails


安装完以上后,可以安装rails了:

从CMD提示窗口输入指令:gem install rails 开始安装rails。
如不想安装文档文件,可以输入:gem install rails --no-rdoc --no-ri 
程序自动下载并安装rails, 耐心等待。
安装完成后,你可以在路径 D:\Ruby\lib\ruby\gems\1.9.1\gems 看到些东西,都是rails的包文件,与ruby安装在同一目录下。
这时在CMD提示窗口输入指令: rails -v  显示rails的版本号。

参考网址:http://www.admin10000.com/document/140.html


Mysql2


拷贝libmysql.dll、libmysql.lib到 D:\Ruby\bin目录下,执行:
gem install mysql2 -- '--with-mysql-lib="E:\Program Files\MySQL\MySQL Server 5.5\lib" --with-mysql-include="E:\Program Files\MySQL\MySQL Server 5.5\include"'
或者
gem install mysql2 -- '--with-mysql-dir="E:\Program Files\MySQL\MySQL Server 5.5"' 
就可以安装成功了,但是使用时(require 'mysql2')报错,如下图:

ruby入门--linux/windows下的安装、代码开发及rails实战_第2张图片

出现的原因是的libmysql.lib和mingw64-gcc不兼容导致的,于是卸载mysql2:gem uninstall mysql2。

gendef.exe,这个从https://structure-svm-map.googlecode.com/files/svm-map-win.zip下载,解压后在python-mingw-lib目录里面。
拷贝到devkit/mingw/bin下,我之所以考到这里,是因为dlltool.exe也在这里,都放到path里方便。
然后运行:gendef.exe libmysql.dll。
这条命令会生成libmysql.def文件。
生成这个libmysql.def文件之后,就可以生成新的lib了。
dlltool -v –dllname libmysql.dll –def libmysql.def –output-lib libmysql.lib。
拷贝libmysql.lib到D:\Ruby\bin目录下面,重新安装,
都OK了。

参考网址: http://liubin.org/2013/10/17/install-mysql2-under-64bit-windows-and-ruby2-0/        https://bugs.ruby-lang.org/issues/8591

注意事项


如果在Windows下面编辑的文件,拿到Linux下面未必能正确运行,因为Windows的换行符到Linux里面是^M,而Linux的是$,对于Windows下面编辑的文件,可以用如下命令进行处理:
dos2unix ruby_start
是否是这种情况,可以通过:cat ruby_start -A看到

到现在,再Ruby的环境中,应该也浸淫了至少2周的时间了吧,对Ruby基本语法,运行环境,生态环境,应该都有一定了解了吧。

开始进入IDE的世界吧。就用RubyMine,现在的版本是6了。经过前几周记事本写代码的世界,现在改用IDE,是不是发现工作变得轻松起来了呢。


你可能感兴趣的:(Ruby,ruby,rails)