2008-04-19

简化gem安装

Ruby on Rails项目往往用到大量第三方的gems,在项目有新成员加入,或配置新的开发系统时,一个个的安装是件很繁琐的事情。

我用的办法就是写一个自己的gem,让它依赖于项目里用到的其他gems。这样的话,安装这个gem的时候,就会顺带把其他gems安装了。

代码非常简单:

>cat install-gems.gemspec
#
#Usage:
#gem build install-gems.gemspec
#gem install install-gems.0.0.1.gem
#gem uninstall install-gems (optional, remove this useless gem)
#
spec = Gem::Specification.new do |s|
s.name = "install-gems"
s.version = "0.0.1"
s.author = "yawl"
s.email = "yawl@javaeye.com"
s.homepage = "http://xruby.javaeye.com"
s.platform = Gem::Platform::RUBY
s.summary = "This gem has no content in itself, it helps to install all the gems we depend on"
s.add_dependency('actionmailer', '>=2.0.2')
s.add_dependency('actionpack', '>=2.0.2')
s.add_dependency('activerecord', '>=2.0.2')
s.add_dependency('activeresource', '>=2.0.2')
s.add_dependency('activesupport', '>=2.0.2')
s.add_dependency('acts_as_ferret', '>=0.4.3')
s.add_dependency('capistrano', '>=2.1.0')
s.add_dependency('mysql', '>=2.7')
s.add_dependency('rails', '>=2.0.2')
s.add_dependency('rake', '>=0.8.1')
# add more here
end
评论
yawl 2008-04-25
嗯,这个好。

leondu 写道

rake gems:unpack # Unpacks all gems into vendor/gems.
leondu 2008-04-25
yawl 写道
用了一下2.1的这个功能还不错。

一个小问题就是gem安装需要root权限,而我们自动deploy时是以普通用户进行的,所以没有把'rake gems:install'加到脚本里。

我知道可以把sudo设成不要密码,或者把gem安装目录的权限改了。但从安全的考虑都不愿意实施。


rake gems:unpack # Unpacks all gems into vendor/gems.
yawl 2008-04-24
用了一下2.1的这个功能还不错。

一个小问题就是gem安装需要root权限,而我们自动deploy时是以普通用户进行的,所以没有把'rake gems:install'加到脚本里。

我知道可以把sudo设成不要密码,或者把gem安装目录的权限改了。但从安全的考虑都不愿意实施。
Stainlesssteel 2008-04-20
lgn21st 写道

# environment.rb实例

Rails::Initializer.run do |config| 
  # config.gem "bj"
  # config.gem "hpricot", :version => '0.6', :source => "http://code.whytheluckystiff.net" 
  # Require a gem that needs to require a file different than the gem's name
  # config.gem "aws-s3", :lib => "aws/s3"
  config.gem "tzinfo", :version => '>= 0.3.8'
  config.gem "ambition", :version => '>= 0.5.2'
  config.gem "ambitious-activerecord", :version => '>= 0.1.1', 
                                       :lib => 'ambition/adapters/active_record'

  # 或者如下写法
  gem 'will_paginate', '~> 2.2.1'
  require 'will_paginate'

 # 用法
  # rake gems             # List the gems that this rails application depends on
  # rake gems:install     # Installs all required gems for this application.
  # rake gems:unpack      # Unpacks all gems into vendor/gems.
  # rake gems:unpack:dependencies      # Unpack all dependencies
  # rake gems:unpack:dependencies GEM=foo #Unpack all dependencies for gem foo
  # rake gems:build       # for build native extensions.

end 
rubynroll 2008-04-19
Hmm, 内部gemserver这个时候就很好用了
caryl 2008-04-19
恩,这个办法不错
发表评论

提醒: 该博客已发表在公共论坛,博客所有留言会成为论坛回贴,留言请注意遵守论坛发贴规则

您还没有登录,请登录后发表评论

yawl
搜索本博客
最近加入圈子
存档
最新评论