Gem 有没有高手可以一一讲解这些 gem 的应用

kevinhua · 2012年03月17日 · 最后由 Jijin 回复于 2013年04月11日 · 7669 次阅读
source 'http://ruby.taobao.org/'

gem 'rails', '3.2.2'
gem 'rails-i18n', '0.1.8'
gem 'jquery-rails', '2.0.1'
gem 'rails_autolink', '>= 1.0.6'

# Gems for Mongodb support
gem 'mongoid', '2.4.3'
gem 'bson', '1.5.2'
gem 'bson_ext', '1.5.2'
gem 'mongo-rails-instrumentation', '0.2.4'
gem 'mongoid_auto_increment_id', '0.4.0'
gem 'mongoid_rails_migrations', '~> 0.0.14'

# Word segmentation and search
gem 'chinese_pinyin', '0.4.1'
gem 'rmmseg-cpp-huacnlee', '0.2.9'
gem 'redis-search', '0.7.0'

# Gems used only for assets and not required
# in production environments by default.
group :assets do
  gem 'sass-rails',   '~> 3.2.3'
  gem 'coffee-rails', '~> 3.2.1'
  # See https://github.com/sstephenson/execjs
  # readme for more supported runtimes
  # gem 'therubyracer'
  gem 'uglifier', '>= 1.0.3'
end

# Upload plugins
gem 'carrierwave', '0.5.8'
gem 'carrierwave-mongoid', '0.1.3', :require => 'carrierwave/mongoid'
gem 'carrierwave-upyun', '0.1.5'
gem 'mini_magick', '3.4'

# User, permission, and third-party authentifcation
gem 'devise', '2.0.4'
gem 'devise_invitable', '1.0.0'
gem 'cancan', '~> 1.6.7'
gem 'omniauth', '~> 1.0.3'
gem 'omniauth-openid', '~> 1.0.1'
gem 'omniauth-douban', :git => "git://github.com/ballantyne/omniauth-douban.git"

# Pagination
gem 'will_paginate', '3.0.3'
gem 'will_paginate_mongoid', '1.0.4'
gem 'bootstrap-will_paginate', '0.0.6'

# Markdown plugins
gem 'redcarpet', '~> 2.1.1'
gem 'hpricot', '~> 0.8.6'
gem 'pygments.rb', '~> 0.2.7'

# Redis, redis namespace and objects
gem 'redis', '2.2.2'
gem 'redis-namespace', '~> 1.0.2'
gem 'redis-objects', '0.5.2'

# YAML configuration
gem 'settingslogic', '~> 2.0.8'

# View components and helpers
gem 'cells', '3.8.3'
gem 'sprite-factory', '1.4.2'
gem 'social-share-button', '0.0.3'
gem 'simple_form', '~> 2.0.1'
gem 'twitter-bootstrap-rails', '~> 2.0.4'
gem 'htmldiff', :git => 'git://github.com/huacnlee/htmldiff.git'

# Wice grid for Cpanel
gem 'wice_grid', '3.0.4'
gem 'mongoid_wice_grid', '4.0.0', :require => 'wice_grid'

# Delayed or Crontab jobs
gem 'whenever', '0.7.3'
gem 'resque', '1.20.0', :require => 'resque/server'
gem 'resque_mailer', '2.0.3'
gem 'juggernaut', '~> 2.1.1'

# Documents, charts and reports
gem 'googlecharts', '~> 1.6.8'
gem 'ekuseru', '~> 0.3.10'
gem 'fastercsv', '~> 1.5.4'

# Gems for Google Maps
gem 'gmaps4rails', '~> 1.4.8'
gem 'mongoid_geo', '~> 0.6.0'

# AWS simple email server
gem 'aws-ses', '~> 0.4.4'
gem 'mail_view', :git => 'git://github.com/37signals/mail_view.git'

# Quick API
gem 'grape', :git => 'git://github.com/intridea/grape.git', :branch => 'frontier'

# Other plugins
gem 'daemon-spawn', '~> 0.4.2'
gem 'quiet_assets', :git => 'git://github.com/AgilionApps/quiet_assets.git'
gem 'tagged-cache', '1.1.1'

group :development, :test do
  gem 'capistrano', '2.11.2'
  gem 'chunky_png', "1.2.5"
  gem "memcache-client", "1.8.5"
  gem 'progress_bar'
  gem 'rspec-rails', '~> 2.8.1'
  gem 'factory_girl_rails', '~> 1.7.0'
  gem 'thin', '~> 1.3.1'
  gem "simplecov", :require => false
  gem "rspec-cells"
  gem "capybara"
end

group :production do
  gem "unicorn", '~> 4.2.0'
  gem 'dalli', '1.1.5'
end

这些 gem 在 github 上都有源码和简单的文档,楼主去一看便知 另外这个清单里的大部分 gem 在 railscasts 上也都有视频介绍

部分 GEM 还蛮好理解的,不过我都希望有前辈针对某一部分讲解下,类如 API!

分类 (这里已经帮你做好了),README, 怎么使用 (别人怎么做或视频),源代码 (很重要)。为什么,总结,自己写。要懂得联系自己已经学习/懂了的!

#3 楼 @leekelby 分类我自己补充了一些,在者也和 ruby-china 的基础上,加了一些"reports and charts" 和 "google maps"的 gems,rubygems 上是有,github 的说明也有,但有经验的人的讲解胜过看十遍 readme 或 mannual 呀。

装个 gemedit,需要看什么就看下源码,ruby 很多 gem 都很小,甚至不需要看文档

我觉得,楼主的这个列表有点太长了,不能突出重点, 我建议,你不妨,先列出两个你最想知道的 gem。 这样,我们回答起来也容易很多。

接触和使用过一部分,估计没有一个人能全部很熟悉,多逛逛 github 就都知道了

#4 楼 @kevinhua 现在 rails 可选的 gem 已经很多了,一一学习肯定很难,更应该思考为什么设计它们、使用起来有什么好处。明白了这点,旁类触通很多 gems 其实都是差不多的。 你的问题是“知道这些 gem 的应用”,我觉得最好的方法就是:把它们写出来!

wice_grid 有点冲突,准备删之。

删除 gem 'wice_grid'和 gem 'mongoid_wice_grid'后,rails s 能正常运行啦:

用'thin'取代'web-brick',发现这套 Gemfile 还挺好。以后有时间逐个击破之。

rails new appname -O
touch config/mongoid.yml
vim config/mongoid.yml

简单的几条命令,rails 就构架成功啦。

Ruby version    1.9.3 (x86_64-linux)
RubyGems version    1.8.15
Rack version    1.4
Rails version   3.2.2
JavaScript Runtime  therubyracer (V8)
Action Pack version 3.2.2
Active Resource version 3.2.2
Action Mailer version   3.2.2
Active Support version  3.2.2
Middleware  
ActionDispatch::Static
Rack::Lock
#<ActiveSupport::Cache::Strategy::LocalCache::Middleware:0x000000047d6550>
Rack::Runtime
Rack::MethodOverride
ActionDispatch::RequestId
Rails::Rack::Logger
ActionDispatch::ShowExceptions
ActionDispatch::DebugExceptions
ActionDispatch::RemoteIp
ActionDispatch::Reloader
ActionDispatch::Callbacks
ActionDispatch::Cookies
ActionDispatch::Session::CookieStore
ActionDispatch::Flash
ActionDispatch::ParamsParser
ActionDispatch::Head
Rack::ConditionalGet
Rack::ETag
ActionDispatch::BestStandardsSupport
Warden::Manager
Rack::Mongoid::Middleware::IdentityMap
Application root    /home/kevin/hujoycore
Environment development

我不是很懂 rails,但如果我想了解这些 gems 的作用,我会 google "___ documentation" "___ tutorial" "___ example"

这是什么工程?发出来学习一下

楼主在杭州吗?我之前在旺旺群里提过一个想法,在 ruby tuesday 的时候可以时不时加入一次源码阅读的活动,阅读的对象可以就是这些 gem,当然组织这样的活动需要预先稍作准备,但是大家轮流负责应该问题也不大

#12 楼 @inetufo 呵呵,还没有这个工程

上面大部分 Gem 在 Github 上面搜索就可以知道它具体是做什么用的了,也不是太复杂。在项目里面尝试用用很快就明白了。

我一开始接触 Gem 时也特别郁闷,觉得跟 JAR 包特别不一样,当时还觉得 JAR 好用。。跟着文档说明一步步实现,用过一两个后慢慢适应了。我第一个是 Top4r,淘宝的对接接口。

@huacnlee 华顺你好,请问 ruby-china 源码 gemfile 里这样

gem 'grape', :github => 'intridea/grape', :branch => 'frontier'

然后

bundle install Updating git://github.com/intridea/grape.git fatal: ambiguous argument 'frontier': unknown revision or path not in the working tree. Use '--' to separate paths from revisions, like this: 'git [...] -- [...]' Git error: command git rev-parse frontier in directory /Users/hjj/.rvm/gems/ruby-1.9.3-p392/cache/bundler/git/grape- c77c5fb0336b00082cc45f4584f3dddedc8cb513 has failed. If this error persists you could try removing the cache directory '/Users/hjj/.rvm/gems/ruby-1.9.3-p392/cache/bundler/git/grape- c77c5fb0336b00082cc45f4584f3dddedc8cb513'

改成

gem 'grape'

bundle install 通过,但是启动却这样

ruby-china git:(master) ✗ rails s => Booting Thin => Rails 3.2.13 application starting in development on http://0.0.0.0:3000 => Call with -d to detach => Ctrl-C to shutdown server Exiting /Users/hjj/open_source/ruby-china/app/grape/entities.rb:5:in <module:APIEntities>': uninitialized constant Grape::Entity (NameError) from /Users/hjj/open_source/ruby-china/app/grape/entities.rb:4:inmodule:RubyChina' from /Users/hjj/open_source/ruby-china/app/grape/entities.rb:3:in <top (required)>' from /Users/hjj/.rvm/gems/ruby-1.9.3-p392/gems/backports- 2.6.7/lib/backports/tools.rb:314:inrequire'

在 app/grape/entities.rb 文件里 require‘grape’也不行,该怎么改呢

kevinhua 关闭了讨论。 10月10日 10:28
需要 登录 后方可回复, 如果你还没有账号请 注册新账号