2014年1月3日 星期五

[Shared] Sinatra為何輕

Sinatra為何輕
Sinatra 採用 DSL 語法,
也啟發了其他程式語言的framework的建立。

比較一下 rails 3 sinatra 安裝時所要用的套件,
在乾淨的 gem 的環境下安裝 rails 就裝了 29 gems


1.  $ rvm gemset use ror3  
2.  Using ruby-1.9.3-p194 with gemset ror3  
3.  $ gem list  
4.    
5.  *** LOCAL GEMS ***  
6.    
7.  actionmailer (3.2.8)  
8.  actionpack (3.2.8)  
9.  activemodel (3.2.8)  
10. activerecord (3.2.8)  
11. activeresource (3.2.8)  
12. activesupport (3.2.8)  
13. arel (3.0.2)  
14. builder (3.0.3)  
15. bundler (1.2.1)  
16. erubis (2.7.0)  
17. hike (1.2.1)  
18. i18n (0.6.1)  
19. journey (1.0.4)  
20. json (1.7.5)  
21. mail (2.4.4)  
22. mime-types (1.19)  
23. multi_json (1.3.6)  
24. polyglot (0.3.3)  
25. rack (1.4.1)  
26. rack-cache (1.2)  
27. rack-ssl (1.3.2)  
28. rack-test (0.6.2)  
29. rails (3.2.8)  
30. railties (3.2.8)  
31. rake (0.9.2.2)  
32. rdoc (3.12)  
33. rvm (1.11.3.5)  
34. sprockets (2.1.3)  
35. thor (0.16.0)  
36. tilt (1.3.3)  
37. treetop (1.4.11)  
38. tzinfo (0.3.33)  

Sinatra 只裝 4 gems

1.  $ rvm gemset use sinatra  
2.  Using ruby-1.9.3-p194 with gemset sinatra  
3.  $ gem list  
4.    
5.  *** LOCAL GEMS ***  
6.    
7.  bundler (1.2.1)  
8.  rack (1.4.1)  
9.  rack-protection (1.2.0)  
10. rake (0.9.2.2)  
11. rvm (1.11.3.5)  
12. sinatra (1.3.3)  
13. tilt (1.3.3)  

Rails 用到這麼多的 gems
分析起來是 rails 本身包了幾項的功能:
然而在 ruby 的世界裡,
有這幾大功能的套件,
都可以有其他的選擇:
在上面的兩個套件裡都有 rack 套件,
Rack web server 介面,
什麼是 Rack,可參考:
所以 Rack 為核心的話,
可以像這樣子的其他套件做組合:
Sinatra 其實只有像這樣子的組合:
ROR 是以 MVC 的架構考量,
Sinatra 並不以 MVC 為目的,
若有 MVC 的需要,
ORMTemplate可依需選擇所喜好的套件。

如果要做 API server
或者輕量化的網站,
其他功能不需要用到,
效能或反應上的考量,
Sinatra是比較好的選擇。

參考資料:http://www.slideshare.net/adamwiggins/rails-metal-rack-and-sinatra
原文作者:iT邦大師 twtw

沒有留言:

張貼留言