Difference between revisions of "Ruby (简体中文)"

From ArchWiki
Jump to: navigation, search
(fix)
(Ruby 1.9: Moved to AUR.)
Line 13: Line 13:
  
 
=== Ruby 1.9 ===
 
=== Ruby 1.9 ===
要安装 Ruby 1.9.3, 安装 {{Pkg|ruby1.9}} 这个包. Ruby 1.9 包含了 RubyGems.
+
要从 [[AUR]] 安装 Ruby 1.9.3, 安装 {{AUR|ruby1.9}}. Ruby 1.9 包含了 RubyGems.
 
+
优势:
+
* 相对 1.8 大夫提升了性能
+
* 支持并发的新特性, 比如 Fibers
+
* 各种其他语言特性的提升, 比如改进的 CSV parser
+
 
+
劣势:
+
* 很很多原有的 gem 不兼容 (以及 Ruby On Rails 早于 2.3 的版本)
+
* 语言层面的改变可能导致以往 Ruby 代码无法正常运行, 甚至出现意想不到的 bug
+
 
+
{{注意|访问 http://isitruby19.com/ 来确定你引用的 gem/module 是否兼容 Ruby 1.9.}}
+
  
 
=== Ruby 1.8 ===
 
=== Ruby 1.8 ===

Revision as of 10:04, 6 July 2013

翻译状态: 本文是英文页面 Ruby翻译,最后翻译时间:2013-04-30,点击这里可以查看翻译后英文页面的改动。

Ruby 是一门专注于简洁和生产里的动态语言, 是解释型语言, 开源编程语言.

安装 Ruby

按照需要来选择安装 Ruby 的版本. 为了支持遗留下来的软件, 必要时请安装 Ruby 1.9 甚至 1.8. 开展新项目建议 Ruby 2.0 .以下是一个概要, 关于当前有的版本和如何获取.

Ruby 2.0

要安装 Ruby 2.0.0, 安装 ruby 这个包. Ruby 2.0 包含了 #RubyGems.

Ruby 1.9

要从 AUR 安装 Ruby 1.9.3, 安装 ruby1.9AUR. Ruby 1.9 包含了 RubyGems.

Ruby 1.8

要安装 Ruby 1.8.7, 安装 ruby1.8AUR 包或者从 AUR 安装 ruby-1.8.7-svnAUR. Ruby 1.8 不含 RubyGems. 而是通过安装 rubygems1.8AUR 这个包来完成.

多版本

如果你要在同一个系统安装多个版本 (比如 2.0.0-p0 和 1.9.3-p392), 最简单的办法时安装 RVM 或者 rbenv.

RubyGems

gem 是 Ruby 模块 (叫做 Gems) 的包管理器, 某种程度上是 pacman 向对于 Arch Linux 的角色. gem 命令你可以通过遵循上边的操作来得到.

用例

查看已安装有那些 gem:

$ gem list

获取某个 gem 的详细信息:

$ gem spec <gem_name>

默认情况下, gem listgem spec 开启了 --local 选项, 导致 gem 只会在本地系统里进行搜索. 这可以用 --remote 参数来覆盖. 这样子以后, 来搜索一个 mysql gem:

$ gem list --remote mysql

安装一个 gem:

$ gem install mysql

安装过程可以加快一点, 如果你不需要本地的文档的话:

$ gem install mysql --no-rdoc --no-ri

更新所有已安装的 gem:

$ gem update

普通用户身份运行

作为普通用户安装 gem 的时候, gem 默认被安装在 ~/.gem 而不是在系统全局. 这在 Arch 上被认为是做回的管理 gem 的方案. 不巧的是并非所有 gem 都乐意被安装在这, 甚至可能坚持要以 root 身份安装, 特别是模块含有本地扩展(从 C 编译的代码). 每个用户的方案被配置在 /etc/gemrc 文件里, 可以通过配置 ~/.gemrc 文件来改变.

为了使用一些安装了可执行文件的 gem, 需要把 ~/.gem/ruby/2.0.0/bin 添加到你的 $PATH 环境变量里.

以 root 身份运行

以 root 身份运行时 gem 会被安装在 /root/.gems, 而且不会被安装到 /usr/lib/ruby/gems/.

注意: 访问 bug #33327 查看更多信息.

Bundler 通过把模块打包到你的项目目录, 一定程度上解决了这些问题. 细节看下面关于使用 bundler.

Bundler

Bundler 帮助你指定你的项目需要使用哪些 gem, 还有可选地指定哪个版本被需要. 当声明恰当时, Bundler 会安装所有依赖的 gem (包括整个依赖树), 后期检查之后还会打印出 log. Bundler 默认是安装 gem 到一个共享的路径, 不过也可以指定直接安装到你的应用. 当你项目运行的时候, Bundler 就提供每个 gem 正确的版本, 即便安装的 gem 其实有多个版本. 这需要有一点工作: 应用需要以 bundle exec 命令运行, 还有两行的 boilerplate 代码要被写在你的应用的可执行文件里.

安装 Bundler:

$ gem install 

Bundler 默认把 gem 安装在系统全局, 这跟 Arch 上处理 gem 的方案正好相反. 纠正的办法的话, 添加下面的配置到你的 ~/.bashrc:

export GEM_HOME=~/.gem/ruby/2.0.0

新建一个 bundle:

$ bundle init

然后编辑当前目录 (gem init 执行的目录)下的 Gemfile 添加你需要的 gem:

Gemfile
gem "rails", "3.2.9"
gem "mysql"

运行下面的命令安装需要的 gem 到 GEM_HOME:

$ bundle install

或者作为可选方案, 运行下面的命令把 gem 安装到工作路径的 .bundle:

$ bundle install --path .bundle

别忘了要编辑你主要的执行文件:

#!/usr/bin/env ruby

# "This will automatically discover your Gemfile, and make all of the gems in
# your Gemfile available to Ruby." http://gembundler.com/v1.3/rationale.html
require 'rubygems'
require 'bundler/setup'

...

最后运行你的程序:

bundle exec <main_executable_name.rb>

用 pacman 管理 RubyGems

除了用 gem 命令管理 gem, 也可以用 pacman, 或者一些 AUR 帮助工具. Ruby 模块遵循这样的命名惯例 ruby-[gemname]. 这个方案提供了以下的优点:

  • Gems 和你系统其他部分一样被升级. 这样你就不用去运行 gem update: 运行 pacman -Syu 足够了.
  • 已安装的 gem 在全系统可用, 而不是只有安装了这些 gem 的用户.

如果 gem 在仓库里没有, 你可以用 pacgemAUR 自动创建一个, 这个模块接下来就能直接用 pacman 来安装.

又见

引用