ruby常用包管理与git命令

前言

在学习rails和写ruby程序的过程中,相信ruby的包管理都困扰过不少初学者,实在是由于包管理有点混乱,大批的 rails初学者被挡在了rails环境配置和包管理上面,gem是ruby包管理器,有了它省心不少。在ruby1.9以前的版本, 在ruby程序中需要通过require "rubygems"来引入安装的gem包,1.9以后的版本内嵌了rubygems,通过gem安装的ruby 包可以直接应用。

gem

拿ruby1.9.3为例,gem安装的包会在[ruby_dir]/lib/ruby/gems/1.9.1/gems目录下面,这是经过解压后的lib包, 原生态的gem包会被放在[ruby_dir]/lib/ruby/gems/1.9.1/cache目录下面,了解了其目录结构我们就可以很方便 地去手动控制gem包管理。下面我们进去gem命令吧:

  • gem install gemname 从源rubygems.org安装gem包
  • gem install -l gemname.gem 从本地安装gem包,ruby会到上面的cache目录下搜索
  • gem install gemname --version=[ver] 安装指定版本的gem包,对于版本控制这个命令必不可少
  • gem update [gemname] 更新所有或个别gem包,它不会去更新版本
  • gem list --[remote|local] [gemname] 列出远程和本地所有与gemname匹配的gem包
  • gem uninstall gemname [--version=[ver]] 卸载gem包,如果不指定版本,将会卸载所有版本

通过gem可以很容易地控制安装的gem包和管理gem的版本,因为gem可以说是ruby的重要部分,无论是通过手动还是 gem命令去管理gem包,都是不可或缺的。

bundle

bundle是一款管理gem依赖的软件,它只能在包含Gemfile的目录下运行,bundle命令会根据Gemfile文件里的包信息 去管理gem包。先来看一下Gemfile:

source 'http://rubygems.org'是上文中的gem远程库,如果你以为这个库太慢可以将它替换成: source 'http://ruby.taobao.org'

gem "rails", "3.2.2" 表示安装的rails版本为3.2.2

gem "rails", ">=3.2.2" 安装的rails版本要大于等于3.2.2,不满足bundle会报错

gem "rails", "~>3.2.2" 安装的rails版本不大于3.2.2

gem "sqlite3-ruby", "1.2.5", :require => "sqlite3" 项目中的gem更名操作,实际的包名是sqlite3,在 项目中使用需要通过bundle.require来引入。

gem "json", "1.5.5" :git=> 可以通过git来安装gem包

gem "gemname", "version" :path=> 本地路径来安装gem包

要使用bundle需要gem install bundler来安装,它常用的命令如下:

  • bundle install 通过Gemfile来安装gem包
  • bundle update 更新Gemfile中的gem包,它会升级版本号,慎用
  • bundle check 检查系统中缺少的gem包
  • bundle show gem_name 可以查看这个gem的目录位置
  • bundle open gem_name 可以用编辑器打开这个gem的目录

通过bundle install安装好相应版本后会自动生成一个gemfile.lock,将版本号锁死,方便管理。

git

git无疑是当下最流行的开发版本控制工具,如果你们是一个团队来协作开发,需要各个版本的合并与丢弃,那么 git无疑是最合适的选择。我们从如何创建git库开始,让你快速地学会使用git:

  1. ubuntu下面sudo apt-get install git来安装git
  2. git init 将已经存在的文件夹初始化为一个本地git仓库

当然你可以直接clone远程已经存在的git仓库:

  1. git clone https://github.com/zhing/zhing.github.com.git,这种方式是通过http来克隆git仓库,当然 也可以通过ssh来进行。
  2. git config --global user.name "zhing" 设置你的全局用户名,当然也可以指定email等属性

当需要提交某些改动时:

  1. git add <filename|dirname>
  2. git commit -m "改动说明"

此时已将你的改动提交到了.git中的HEAD里,但是并没有提交到远程库

当需要将改动推送到远程仓库时,需要如下做:

  1. git remote set-url https://github.com/zhing/zhing.github.com.git 如果你的本地仓库还没有和远程 仓库关联起来,这条指令会帮住你
  2. git push origin master 即将改动提交到远程仓库的master分支中

如果你需要删除某些文件和文件夹,只需将上文中的add改成rm,加上-r表示递归地删除,然后执行上述三个动作 就可以在本地和远程库中删除某些文件

下面我们来说git真正功能强大的表现分支branch:

  • git branch branchname 创建一个本地分支
  • git checkout branchname 切换到branchname这个分支中
  • git branch -d branchname 将branch分支删除,这时你需要切换到其他的分支中
  • git push origin branchname 将你的本地分支推送到远程仓库中

上面说明了怎么创建分支,这样你就可以在分支中开发自己的代码了,各个分支中的代码并不会互相干扰,我们 建议不要再主分支master上开发。

如果需要分支和更新和合并,如下:

  • git pull 将远程库中的代码更新至你的本地库
  • git fetch 从一个远程仓库中下载代码,当然对于git pull 与 fetch,你可以给他们指定关连的远程库
  • git reset --head origin branchname 可以帮助改变你的当前本地分支和远程分支的关联
  • git merge branchname 将分支branchname与当前分支合并,当然不是都能成功,有时候需要你去手动修改 一些conflicts

这些内容让你进行一般的git开发已经够用了,如果你想更深入,可以去弄清楚.git里面的HEAD,分支提交和合并 的奥秘都在那里面。



Previous     Next
zhing /
Published under (CC) BY-NC-SA in categories ruby  tagged with ruby