鐵路不模型方法添加到圖。你可以猴子修補鐵路代碼來獲得這個功能。
在config/initializers
目錄中創建一個名爲rail_road_monkey_patch.rb
的文件,並添加以下代碼。
require 'app_diagram'
# RailRoad models diagram
class ModelsDiagram
alias_method_chain :process_class, :methods
def process_class_with_methods(current_class)
if current_class.is_a? Class
na = {:public => [], :protected => [], :private => []}
na[:public] = current_class.public_instance_methods(false).sort unless @options.hide_public
na[:protected] = current_class.protected_instance_methods(false).sort unless @options.hide_protected
na[:private] = current_class.private_instance_methods(false).sort unless @options.hide_private
@graph.add_node ['model', current_class.name, na]
end
process_class_without_methods(current_class)
end
end
現在你需要一個耙子任務運行鐵路(你需要這個以確保補丁被加載)。
namespace :doc do
namespace :diagram do
task :models => :environment do
sh "railroad -i -l -a -m -M | dot -Tsvg | sed 's/font-size:14.00/font-size:11.00/g' > doc/models.svg"
end
task :controllers => :environment do
sh "railroad -i -l -C | neato -Tsvg | sed 's/font-size:14.00/font-size:11.00/g' > doc/controllers.svg"
end
end
task :diagrams => %w(diagram:models diagram:controllers)
end
然後,rake doc:diagrams
產生doc/models.svg
和doc/controllers.svg
。如果您在Windows上,請適當修改rake任務。
注1:Rake任務取自Railroad
自述文件。
注2我還沒有測試過代碼。
我已經更新了添加rake任務的答案,請看一看。 – 2010-05-04 06:40:27
謝謝。讓我看看它是如何工作的。 – Shuo 2010-05-05 03:23:45