什么是Ruby on Rails?
圖片來源: RubyonRails.org
純粹主義者的Web開發框架
早在1995年,松本行弘(Yukihiro Matsumoto)發行了Ruby 0.95,它是一種純的,面向對象(OO)的通用編程語言:
作為一名語言狂熱者和面向對象的粉絲,有15年的歷史了,我真的想要一種真正的面向對象,易于使用的腳本語言。 我尋找了,但是找不到。 所以我決定做到這一點。 — Y. Matsumoto然后在2004年,David Heinemeier Hansson發布了Ruby on Rails的第一個版本作為Web應用程序框架,他使用該版本啟動了團隊管理應用程序Basecamp 。 他在2005年開源了Ruby on Rails,Apple在2007年與OS X Leopard一起發布了它。
在本教程中,我將Ruby on Rails簡稱為Rails。 有些人也使用RoR。
您可能認識的各種流行的Web應用程序都使用Rails,例如GitHub,Shopify,Airbnb,Twitch,SoundCloud,Hulu,Zendesk,Square和Highrise。 但是,由于可伸縮性限制而受到批評,尤其是Twitter,Twitter不得不將其許多服務逐漸轉移到其他平臺。 也就是說,Twitter具有很高的交易率和可擴展性挑戰。
在本教程中,我將回答問題“什么是Ruby on Rails?” 并向您介紹編程框架的基礎知識,以幫助您進行實驗。
在開始之前,請記住,我參加了下面的討論。 如果您有任何問題或建議,請在下面發表評論,或通過Twitter @reifman與我聯系 。
什么是Ruby on Rails?
Ruby on Rails是一種流行的,開源的,面向對象的Web開發框架,許多程序員和應用程序提供商都在使用該框架。 它還基于模型視圖控制器(MVC)方法。
模型映射到數據庫,功能映射到應用程序中的對象,例如用戶。 Rails為命名和文件目錄結構提供了一個標準約定,該約定簡化了編程,還提供了自動構建功能的解決方案,稱為腳手架。 它還確保了開發人員可以共同工作并從彼此的努力中受益的共同環境。
通過約定而不是配置來優化程序員的滿意度是我們的工作方式。Controller主要在用戶和服務器之間管理請求,從模型收集數據并通過View文件將其返回給用戶。
視圖本質上是編程HTML文件,它們用動態數據布置頁面。
Rails約定指導開發人員依賴RESTful路由。 控制器動作通常是新動作,創建動作,編輯動作,更新動作,銷毀動作,顯示動作,索引動作等。這些動作使用戶和系統可以與各種功能進行交互
總的來說,Rails的MVC功能稱為Action Pack,即ActionController,ActionView和ActiveRecord,后者用于與數據庫進行交互。
Rails的創始人漢森(Hansson)在名為Ruby on Rails的框架背后提供了原理性神學。
Ruby on Rails學說
Rails原則包含八個原則:
以下是當前主要的Rails貢獻者(創始人David Hansson在左上方):
他們確實有一個熱情的社區:
- Ruby on Rails:討論郵件列表
- Ruby on Rails StackOverflow Q&A標簽
- irc.freenode.net上的#rubyonrails IRC頻道
- 年度RailsConf會議,用于現實世界的聚會
也許您有興趣進一步學習,所以這里是開始的方法。
Ruby on Rails入門
Rails收集了許多出色的文檔。 這是《 入門指南》的一瞥:
該指南將引導您完成一般介紹,基本安裝和一些初學者的Rails編程。
在Rails上安裝Ruby
Mac用戶會發現預裝了Ruby。 Windows用戶可以簽出RailsInstaller 。 要在OS X上完整安裝Rails,本指南建議Tokaido 。 另外,Daniel Kehoe建議避免使用一鍵式安裝程序,并提供有關Mac OS X El Capitan安裝的詳細說明 。
有經驗的Rails開發人員還報告說,它使Web應用程序開發更加有趣。 — Rails指南但是,自從我運行Rails以來已經有一段時間了,并且在El Capitan上的最新型號Mac上重新安裝它非常耗時。
驗證Ruby的安裝
在OS X上,將預安裝Ruby:
$ ruby -v ruby 2.0.0p645 (2015-04-13 revision 50299) [universal.x86_64-darwin15]安裝Rails框架
我的Rails安裝大約花了10到15分鐘(請耐心等待):
$ sudo gem install rails Password: Fetching: thread_safe-0.3.5.gem (100%) Successfully installed thread_safe-0.3.5 Fetching: tzinfo-1.2.2.gem (100%) Successfully installed tzinfo-1.2.2 Fetching: minitest-5.8.4.gem (100%) Successfully installed minitest-5.8.4 Fetching: activesupport-4.2.5.1.gem (100%) Successfully installed activesupport-4.2.5.1 Fetching: rack-1.6.4.gem (100%) Successfully installed rack-1.6.4 Fetching: rack-test-0.6.3.gem (100%) Successfully installed rack-test-0.6.3 Fetching: mini_portile2-2.0.0.gem (100%) Successfully installed mini_portile2-2.0.0 Fetching: nokogiri-1.6.7.2.gem (100%) Building native extensions. This could take a while... Successfully installed nokogiri-1.6.7.2 Fetching: loofah-2.0.3.gem (100%) Successfully installed loofah-2.0.3 Fetching: rails-html-sanitizer-1.0.3.gem (100%) Successfully installed rails-html-sanitizer-1.0.3 Fetching: rails-deprecated_sanitizer-1.0.3.gem (100%) Successfully installed rails-deprecated_sanitizer-1.0.3 Fetching: rails-dom-testing-1.0.7.gem (100%) Successfully installed rails-dom-testing-1.0.7 Fetching: builder-3.2.2.gem (100%) Successfully installed builder-3.2.2 Fetching: erubis-2.7.0.gem (100%) Successfully installed erubis-2.7.0 Fetching: actionview-4.2.5.1.gem (100%) Successfully installed actionview-4.2.5.1 Fetching: actionpack-4.2.5.1.gem (100%) Successfully installed actionpack-4.2.5.1 Fetching: activemodel-4.2.5.1.gem (100%) Successfully installed activemodel-4.2.5.1 Fetching: arel-6.0.3.gem (100%) Successfully installed arel-6.0.3 Fetching: activerecord-4.2.5.1.gem (100%) Successfully installed activerecord-4.2.5.1 Fetching: globalid-0.3.6.gem (100%) Successfully installed globalid-0.3.6 Fetching: activejob-4.2.5.1.gem (100%) Successfully installed activejob-4.2.5.1 Fetching: mime-types-2.99.gem (100%) Successfully installed mime-types-2.99 Fetching: mail-2.6.3.gem (100%) Successfully installed mail-2.6.3 Fetching: actionmailer-4.2.5.1.gem (100%) Successfully installed actionmailer-4.2.5.1 Fetching: thor-0.19.1.gem (100%) Successfully installed thor-0.19.1 Fetching: railties-4.2.5.1.gem (100%) Successfully installed railties-4.2.5.1 Fetching: bundler-1.11.2.gem (100%) Successfully installed bundler-1.11.2 Fetching: concurrent-ruby-1.0.0.gem (100%) Successfully installed concurrent-ruby-1.0.0 Fetching: sprockets-3.5.2.gem (100%) Successfully installed sprockets-3.5.2 Fetching: sprockets-rails-3.0.1.gem (100%) Successfully installed sprockets-rails-3.0.1 Fetching: rails-4.2.5.1.gem (100%) Successfully installed rails-4.2.5.1 Parsing documentation for thread_safe-0.3.5 Installing ri documentation for thread_safe-0.3.5 Parsing documentation for tzinfo-1.2.2 Installing ri documentation for tzinfo-1.2.2 Parsing documentation for minitest-5.8.4 Installing ri documentation for minitest-5.8.4 Parsing documentation for activesupport-4.2.5.1 unable to convert "\x84" from ASCII-8BIT to UTF-8 for lib/active_support/values/unicode_tables.dat, skipping Installing ri documentation for activesupport-4.2.5.1 Parsing documentation for rack-1.6.4 Installing ri documentation for rack-1.6.4 Parsing documentation for rack-test-0.6.3 Installing ri documentation for rack-test-0.6.3 Parsing documentation for mini_portile2-2.0.0 Installing ri documentation for mini_portile2-2.0.0 Parsing documentation for nokogiri-1.6.7.2 unable to convert "\xCA" from ASCII-8BIT to UTF-8 for lib/nokogiri/nokogiri.bundle, skipping Installing ri documentation for nokogiri-1.6.7.2 Parsing documentation for loofah-2.0.3 Installing ri documentation for loofah-2.0.3 Parsing documentation for rails-html-sanitizer-1.0.3 Installing ri documentation for rails-html-sanitizer-1.0.3 Parsing documentation for rails-deprecated_sanitizer-1.0.3 Installing ri documentation for rails-deprecated_sanitizer-1.0.3 Parsing documentation for rails-dom-testing-1.0.7 Installing ri documentation for rails-dom-testing-1.0.7 Parsing documentation for builder-3.2.2 Installing ri documentation for builder-3.2.2 Parsing documentation for erubis-2.7.0 Installing ri documentation for erubis-2.7.0 Parsing documentation for actionview-4.2.5.1 Installing ri documentation for actionview-4.2.5.1 Parsing documentation for actionpack-4.2.5.1 Installing ri documentation for actionpack-4.2.5.1 Parsing documentation for activemodel-4.2.5.1 Installing ri documentation for activemodel-4.2.5.1 Parsing documentation for arel-6.0.3 Installing ri documentation for arel-6.0.3 Parsing documentation for activerecord-4.2.5.1 Installing ri documentation for activerecord-4.2.5.1 Parsing documentation for globalid-0.3.6 Installing ri documentation for globalid-0.3.6 Parsing documentation for activejob-4.2.5.1 Installing ri documentation for activejob-4.2.5.1 Parsing documentation for mime-types-2.99 Installing ri documentation for mime-types-2.99 Parsing documentation for mail-2.6.3 Installing ri documentation for mail-2.6.3 Parsing documentation for actionmailer-4.2.5.1 Installing ri documentation for actionmailer-4.2.5.1 Parsing documentation for thor-0.19.1 Installing ri documentation for thor-0.19.1 Parsing documentation for railties-4.2.5.1 Installing ri documentation for railties-4.2.5.1 Parsing documentation for bundler-1.11.2 Installing ri documentation for bundler-1.11.2 Parsing documentation for concurrent-ruby-1.0.0 Installing ri documentation for concurrent-ruby-1.0.0 Parsing documentation for sprockets-3.5.2 Installing ri documentation for sprockets-3.5.2 Parsing documentation for sprockets-rails-3.0.1 Installing ri documentation for sprockets-rails-3.0.1 Parsing documentation for rails-4.2.5.1 unable to convert "\xFF" from ASCII-8BIT to UTF-8 for guides/assets/images/akshaysurve.jpg, skipping unable to convert "\x89" from ASCII-8BIT to UTF-8 for guides/assets/images/belongs_to.png, skipping unable to convert "\xF4" from ASCII-8BIT to UTF-8 for guides/assets/images/book_icon.gif, skipping unable to convert "\x91" from ASCII-8BIT to UTF-8 for guides/assets/images/bullet.gif, skipping ... ...continued on and on... ... unable to convert "\x80" from ASCII-8BIT to UTF-8 for guides/assets/images/tab_yellow.gif, skipping unable to convert "\x89" from ASCII-8BIT to UTF-8 for guides/assets/images/tab_yellow.png, skipping unable to convert "\xFF" from ASCII-8BIT to UTF-8 for guides/assets/images/vijaydev.jpg, skipping Installing ri documentation for rails-4.2.5.1 31 gems installed但是,它起作用了:
$ rails --version Rails 4.2.5.1創建您的應用程序和框架實例
然后,我創建了一個名為blog的新應用程序:
$ rails new blogcreate create README.rdoccreate Rakefilecreate config.rucreate .gitignorecreate Gemfilecreate appcreate app/assets/javascripts/application.jscreate app/assets/stylesheets/application.csscreate app/controllers/application_controller.rbcreate app/helpers/application_helper.rbcreate app/views/layouts/application.html.erbcreate app/assets/images/.keepcreate app/mailers/.keepcreate app/models/.keepcreate app/controllers/concerns/.keepcreate app/models/concerns/.keepcreate bincreate bin/bundlecreate bin/railscreate bin/rakecreate bin/setupcreate configcreate config/routes.rbcreate config/application.rbcreate config/environment.rbcreate config/secrets.ymlcreate config/environmentscreate config/environments/development.rbcreate config/environments/production.rbcreate config/environments/test.rbcreate config/initializerscreate config/initializers/assets.rbcreate config/initializers/backtrace_silencers.rbcreate config/initializers/cookies_serializer.rbcreate config/initializers/filter_parameter_logging.rbcreate config/initializers/inflections.rbcreate config/initializers/mime_types.rbcreate config/initializers/session_store.rbcreate config/initializers/wrap_parameters.rbcreate config/localescreate config/locales/en.ymlcreate config/boot.rbcreate config/database.ymlcreate dbcreate db/seeds.rbcreate libcreate lib/taskscreate lib/tasks/.keepcreate lib/assetscreate lib/assets/.keepcreate logcreate log/.keepcreate publiccreate public/404.htmlcreate public/422.htmlcreate public/500.htmlcreate public/favicon.icocreate public/robots.txtcreate test/fixturescreate test/fixtures/.keepcreate test/controllerscreate test/controllers/.keepcreate test/mailerscreate test/mailers/.keepcreate test/modelscreate test/models/.keepcreate test/helperscreate test/helpers/.keepcreate test/integrationcreate test/integration/.keepcreate test/test_helper.rbcreate tmp/cachecreate tmp/cache/assetscreate vendor/assets/javascriptscreate vendor/assets/javascripts/.keepcreate vendor/assets/stylesheetscreate vendor/assets/stylesheets/.keeprun bundle installYour user account isn't allowed to install to the system Rubygems.You can cancel this installation and run:bundle install --path vendor/bundleto install the gems into ./vendor/bundle/, or you can enter your passwordand install the bundled gems to Rubygems using sudo.Password: Fetching gem metadata from https://rubygems.org/........... Fetching version metadata from https://rubygems.org/... Fetching dependency metadata from https://rubygems.org/.. Resolving dependencies.... Rubygems 2.0.14 is not threadsafe, so your gems will be installed one at a time. Upgrade to Rubygems 2.1.0 or higher to enable parallel gem installation. Installing rake 10.5.0 Using i18n 0.7.0 Installing json 1.8.3 with native extensions Using minitest 5.8.4 Using thread_safe 0.3.5 Using builder 3.2.2 Using erubis 2.7.0 Using mini_portile2 2.0.0 Using rack 1.6.4 Using mime-types 2.99 Using arel 6.0.3 Installing debug_inspector 0.0.2 with native extensions Using bundler 1.11.2 Installing byebug 8.2.2 with native extensions Installing coffee-script-source 1.10.0 Installing execjs 2.6.0 Using thor 0.19.1 Using concurrent-ruby 1.0.0 Installing multi_json 1.11.2 Installing sass 3.4.21 Installing tilt 2.0.2 Installing spring 1.6.3 Installing sqlite3 1.3.11 with native extensions Installing rdoc 4.2.1 Using tzinfo 1.2.2 Using nokogiri 1.6.7.2 Using rack-test 0.6.3 Using mail 2.6.3 Installing binding_of_caller 0.7.2 with native extensions Installing coffee-script 2.4.1 Installing uglifier 2.7.2 Using sprockets 3.5.2 Installing sdoc 0.4.1 Using activesupport 4.2.5.1 Using loofah 2.0.3 Using rails-deprecated_sanitizer 1.0.3 Using globalid 0.3.6 Using activemodel 4.2.5.1 Installing jbuilder 2.4.0 Using rails-html-sanitizer 1.0.3 Using rails-dom-testing 1.0.7 Using activejob 4.2.5.1 Using activerecord 4.2.5.1 Using actionview 4.2.5.1 Using actionpack 4.2.5.1 Using actionmailer 4.2.5.1 Using railties 4.2.5.1 Using sprockets-rails 3.0.1 Installing coffee-rails 4.1.1 Installing jquery-rails 4.1.0 Using rails 4.2.5.1 Installing sass-rails 5.0.4 Installing web-console 2.3.0 Installing turbolinks 2.5.3 Bundle complete! 12 Gemfile dependencies, 54 gems now installed. Use `bundle show [gemname]` to see where a bundled gem is installed. Post-install message from rdoc: Depending on your version of ruby, you may need to install ruby rdoc/ri data:<= 1.8.6 : unsupported= 1.8.7 : gem install rdoc-data; rdoc-data --install= 1.9.1 : gem install rdoc-data; rdoc-data --install >= 1.9.2 : nothing to do! Yay!run bundle exec spring binstub --all Warning: You're using Rubygems 2.0.14 with Spring. Upgrade to at least Rubygems 2.1.0 and run `gem pristine --all` for better startup performance. * bin/rake: spring inserted * bin/rails: spring inserted您可以在應用程序中瀏覽Rails Web應用程序框架目錄結構:
$ cd blog $ ls Gemfile Rakefile config lib test Gemfile.lock app config.ru log tmp README.rdoc bin db public vendor這是《入門指南》中的一個視圖,顯示了Rails如何依賴約定而不是配置:
啟動您的服務器
最后,您可以使用命令行啟動服務器:
$ bin/rails server Warning: You're using Rubygems 2.0.14 with Spring. Upgrade to at least Rubygems 2.1.0 and run `gem pristine --all` for better startup performance. => Booting WEBrick => Rails 4.2.5.1 application starting in development on http://localhost:3000 => Run `rails server -h` for more startup options => Ctrl-C to shutdown server [2016-02-05 18:14:05] INFO WEBrick 1.3.1 [2016-02-05 18:14:05] INFO ruby 2.0.0 (2015-04-13) [universal.x86_64-darwin15] [2016-02-05 18:14:05] INFO WEBrick::HTTPServer#start: pid=30576 port=3000訪問您的申請
在瀏覽器中,轉到http:// localhost:3000 ,您應該看到通用Rails應用程序的默認主頁:
我不得不說,我希望所有這些都更加干凈。 也就是說,有一些很棒的社區資源可以幫助您成長。
更深入
這是一個免費的GoRails截屏視頻的示例,其中覆蓋了以上目錄中顯示的基本框架應用程序體系結構:
Rails Guide本身會引導您完成許多初始步驟:
總體而言,這里有各種各樣的書面和截屏教程來指導您。
收盤時
如果您對Ruby on Rails及其社區的質量感興趣,我希望您發現本介紹對您有所幫助。 也許您甚至嘗試了上面的安裝。
最近,我對Apple的Swift開源感到很感興趣,Swift是進入面向對象編程語言領域的激動人心的參與者,類似于Ruby,與Rails具有類似的長期潛力。
過去與Rails合作時,我也一直在掙扎,尤其是在托管和擴展功能方面–我還發現托管它的成本更高。 我對Yii仍然感到最滿意,您可以在我們的Envato Tuts + Yii2編程系列中閱讀有關內容。 隨著PHP 7的出現,基于PHP的編程框架的未來看起來更快,更光明。
如有疑問,請在下面發布。 或者,您可以通過Twitter @reifman與我聯系 。 請查看我的Envato Tuts +講師頁面,以查看我編寫的其他教程,例如“ 使用社交媒體定位目擊者” ,其中著重介紹了Instagram和Twitter的API。
相關鏈接
- Ruby on Rails
- Ruby on Rails(維基百科)
- 在Twitter上關注@Rails
- 訂閱本周的Rails
- Go Rails(截屏視頻等)
- Ruby編程語言(維基百科)
- 模型視圖控制器(Wikipedia)
- RailsConf
翻譯自: https://code.tutsplus.com/tutorials/what-is-ruby-on-rails--cms-22077
總結
以上是生活随笔為你收集整理的什么是Ruby on Rails?的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: ListView优化
- 下一篇: Unix编程艺术-翻译-开篇