2014-10-28 23 views
0

我是RoR的新手,跳入一個大型的RoR項目。該項目使用了一堆寶石。實際上,Gemfile.lock文件(包括依賴項)的長度爲460行。有人告訴我,這個項目經歷了幾個不同的開發者,並且可能會有很多東西在那裏。用於描述gemfile中gem目的的gem?

有沒有什麼辦法可以生成每個寶石的列表?這並不完全直觀,尤其是像「水豚」,「可卡因」和「雨滴」這樣的名字。

  1. 是否有任何簡單的過程來確定哪些寶石是必需的?
+0

從'Gemfile'開始會更容易,而Google搜索'ruby [gem name]'最有可能指向你的Github頁面。我確信有很多寶石,但我不確定是否有一種簡單的方法可以列出每個寶石的列表,而不是查找寶石的rdoc。它加載的環境('test,dev')應該給你一些什麼期望的開始 – SuckerForMayhem 2014-10-28 15:32:09

+0

[RubyGems](https://rubygems.org/search?utf8=%E2%9C%93&query=capybara)也是一個良好的資源,並給你每個寶石的小說明 – SuckerForMayhem 2014-10-28 15:36:31

回答

2

你真的不應該太在乎什麼在開始,只是Gemfile

要獲得寶石的細節,我只是鞭打這個腳本高達轉儲所有的寶石摘要在當前的包:

require 'yaml' 

gems = `bundle list` 
names = gems.scan(/^\s+\*\s+([\w-]+)\s+\(.*\)\s*$/).flatten 

names.each do |name| 
    summary = YAML.parse(`gem speC#{name} summary`).root.value rescue '???' 
    puts "#{name}: #{summary}" 
end 

保存到一個文件,像這樣在命令行中運行:

ruby whatever-you-saved-it-as.rb

對於我的項目,我得到這個:

actionmailer: Email composition, delivery, and receiving framework (part of Rails). 
actionpack: Web-flow and rendering framework putting the VC in MVC (part of Rails). 
actionview: Rendering framework putting the V in MVC (part of Rails). 
activemodel: A toolkit for building modeling frameworks (part of Rails). 
activerecord: Object-relational mapper framework (part of Rails). 
activesupport: A toolkit of support libraries and Ruby core extensions extracted from the Rails framework. 
addressable: URI Implementation 
annotate: Annotates Rails Models, routes, fixtures, and others based on the database schema. 
arel: Arel is a SQL AST manager for Ruby 
ast: A library for working with Abstract Syntax Trees. 
astrolabe: An object-oriented AST extension for Parser 
awesome_print: Pretty print Ruby objects with proper indentation and colors 
... 

其實挺有意思的。

+0

好的,謝謝,現在就試試吧! – 2014-10-28 15:54:53

1

假設每個寶石都有一個有意義的描述,您可以運行Rails的控制檯是這樣的:

Gem.loaded_specs.values.map { |g| "#{g.name}: #{g.summary}" } 

紅寶石的動態特性使得它很難自動查找未使用的寶石(例如,通過代碼分析)。但是,您可以嘗試逐個刪除寶石。如果你的項目的測試套件沒有給定的寶石,它肯定是一個強有力的信號,它可能是安全的刪除它。

相關問題