Статьи

Что такое Ruby on Rails?

Изображение предоставлено: RubyonRails.org

Еще в 1995 году Юкихиро Мацумото выпустил Ruby 0.95 как чистый объектно-ориентированный (ОО) язык программирования общего назначения:

Как 15-летний фанат языка и OO, я действительно хотел настоящий объектно-ориентированный, простой в использовании язык сценариев. Я искал, но не мог найти. Поэтому я решил сделать это. — Ю. Мацумото

Затем в 2004 году Дэвид Хайнмайер Ханссон выпустил первую версию Ruby on Rails в качестве инфраструктуры веб-приложений, которую он использовал для запуска своего приложения для управления командой Basecamp . Он открыл исходный код Ruby on Rails в 2005 году, а Apple выпустила его с OS X Leopard в 2007 году.

Для этого урока я буду называть Ruby on Rails как Rails для краткости; некоторые люди также используют RoR.

Rails используется в самых разных популярных веб-приложениях, таких как GitHub, Shopify, Airbnb, Twitch, SoundCloud, Hulu, Zendesk, Square и Highrise. Тем не менее, он подвергся критике за ограничения масштабируемости, особенно с Twitter, который постепенно пришлось перенести многие свои услуги на другие платформы. Тем не менее, Twitter имеет высокие скорости транзакций и проблемы масштабируемости.

Что такое Ruby on Rails? Примеры приложений на Rails с Juggler для удовольствия

В этом уроке я отвечу на вопрос «Что такое Ruby on Rails?» и познакомит вас с основами структуры программирования, чтобы помочь вам поэкспериментировать с ней.

Прежде чем мы начнем, пожалуйста, помните, я участвую в обсуждениях ниже. Если у вас есть вопрос или предложение по теме, пожалуйста, оставьте комментарий ниже или свяжитесь со мной в Twitter @reifman .

Ruby on Rails — это популярная объектно-ориентированная среда разработки с открытым исходным кодом, используемая многими программистами и поставщиками приложений. Он также основан на подходе контроллера представления модели (MVC).

Модели сопоставляются с базами данных, а функциональность — с объектом в приложении, например с пользователями. Rails предоставляет стандартное соглашение для именования и структуры каталогов файлов, что упрощает программирование, но также предоставляет автоматизированные решения для создания функциональности, называемой скаффолдингом. Это также обеспечивает общую среду для совместной работы разработчиков и извлечения выгоды из усилий друг друга.

Оптимизация для счастья программистов с Конвенцией над Конфигурацией — вот как мы катимся

Контроллер управляет запросами в основном между пользователем и сервером, собирая данные из моделей и возвращая их пользователю через Просмотр файлов.

Представления — это, по сути, программные файлы HTML, которые размещают страницу с динамическими данными.

Соглашения Rails помогают разработчикам полагаться на маршрутизацию RESTful. Действия контроллера, например, новые, создание, редактирование, обновление, удаление, показ, индексирование и т. Д. Это то, что позволяет пользователям и системе взаимодействовать с различными функциями.

В совокупности функции MVC Rails называются Action Pack, то есть ActionController, ActionView и ActiveRecord, последние для взаимодействия с базой данных.

Что такое Ruby on Rails Запись контроллера представления пакета действий

Основатель Rails Ханссон представляет принципиальную теологию фреймворка под названием «Доктрина Ruby on Rails» .

Что такое Ruby on Rails Доктрина Rails

Доктрина Rails состоит из восьми принципов:

  1. Оптимизация для счастья программиста : по возможности Ruby старается удовлетворить желания программиста.
  2. Соглашение над конфигурацией : выбор стандартного, стандартного для всей платформы варианта выбора позволяет программистам быстрее и проще приступить к новым проектам.
  3. Меню omakase : команда Ruby on Rails выбрала лучшие инструменты и подходы, и все будут счастливы, используя их.
  4. Нет единой парадигмы : в конце концов, Rails предлагает гибкие решения для различных случаев.
  5. Превознесите красивый код : основной упор на эстетику и простоту.
  6. Ценные интегрированные системы : ориентация на полное понимание и согласованность всех инструментов, необходимых для создания приложений и решений.
  7. Прогресс за стабильность : готовность идти на риск, чтобы продвинуть платформу вперед.
  8. Поднимите большую палатку : приветствуйте большое сообщество участников и их голоса, чтобы установить видение.

Главным достижением Rails было объединение и развитие сильного племени вокруг широкого круга еретических мыслей о природе программирования и программистов. — Дэвид Хайнемайер Ханссон

Вот основные авторы Rails (основатель David Hansson вверху слева):

Что такое Ruby on Rails? Основная команда

И у них есть теплое, гостеприимное сообщество:

Возможно, вы заинтересованы в дальнейшем погружении, так что вот как начать.

У Rails есть коллекция выдающейся документации. Вот взгляд на руководство по началу работы :

Что такое Ruby on Rails Начало работы

Руководство проведет вас через общее введение, базовую установку и некоторые начальные навыки программирования на Rails.

Пользователи Mac найдут Ruby предустановленным. Пользователи Windows могут проверить RailsInstaller . Для полной установки Rails на OS X, руководство рекомендует Tokaido . В качестве альтернативы Дэниел Кехо предлагает избежать установки одним щелчком мыши и предоставляет подробные инструкции по установке Mac OS X El Capitan .

Опытные разработчики Rails также сообщают, что это делает разработку веб-приложений более увлекательной. Руководство по рельсам

Тем не менее, прошло много времени с тех пор, как я запускал Rails, и переустановка его на моей поздней модели Mac на El Capitan заняла много времени.

На OS X Ruby будет предварительно установлен:

1
2
$ ruby -v
ruby 2.0.0p645 (2015-04-13 revision 50299) [universal.x86_64-darwin15]

Моя установка Rails заняла от 10 до 15 минут (наберитесь терпения):

001
002
003
004
005
006
007
008
009
010
011
012
013
014
015
016
017
018
019
020
021
022
023
024
025
026
027
028
029
030
031
032
033
034
035
036
037
038
039
040
041
042
043
044
045
046
047
048
049
050
051
052
053
054
055
056
057
058
059
060
061
062
063
064
065
066
067
068
069
070
071
072
073
074
075
076
077
078
079
080
081
082
083
084
085
086
087
088
089
090
091
092
093
094
095
096
097
098
099
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
$ 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.
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

Но это сработало:

1
2
$ rails —version
Rails 4.2.5.1

Затем я создал новое приложение под названием блог:

001
002
003
004
005
006
007
008
009
010
011
012
013
014
015
016
017
018
019
020
021
022
023
024
025
026
027
028
029
030
031
032
033
034
035
036
037
038
039
040
041
042
043
044
045
046
047
048
049
050
051
052
053
054
055
056
057
058
059
060
061
062
063
064
065
066
067
068
069
070
071
072
073
074
075
076
077
078
079
080
081
082
083
084
085
086
087
088
089
090
091
092
093
094
095
096
097
098
099
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
$ rails new blog
      create
      create README.rdoc
      create Rakefile
      create config.ru
      create .gitignore
      create Gemfile
      create app
      create app/assets/javascripts/application.js
      create app/assets/stylesheets/application.css
      create app/controllers/application_controller.rb
      create app/helpers/application_helper.rb
      create app/views/layouts/application.html.erb
      create app/assets/images/.keep
      create app/mailers/.keep
      create app/models/.keep
      create app/controllers/concerns/.keep
      create app/models/concerns/.keep
      create bin
      create bin/bundle
      create bin/rails
      create bin/rake
      create bin/setup
      create config
      create config/routes.rb
      create config/application.rb
      create config/environment.rb
      create config/secrets.yml
      create config/environments
      create config/environments/development.rb
      create config/environments/production.rb
      create config/environments/test.rb
      create config/initializers
      create config/initializers/assets.rb
      create config/initializers/backtrace_silencers.rb
      create config/initializers/cookies_serializer.rb
      create config/initializers/filter_parameter_logging.rb
      create config/initializers/inflections.rb
      create config/initializers/mime_types.rb
      create config/initializers/session_store.rb
      create config/initializers/wrap_parameters.rb
      create config/locales
      create config/locales/en.yml
      create config/boot.rb
      create config/database.yml
      create db
      create db/seeds.rb
      create lib
      create lib/tasks
      create lib/tasks/.keep
      create lib/assets
      create lib/assets/.keep
      create log
      create log/.keep
      create public
      create public/404.html
      create public/422.html
      create public/500.html
      create public/favicon.ico
      create public/robots.txt
      create test/fixtures
      create test/fixtures/.keep
      create test/controllers
      create test/controllers/.keep
      create test/mailers
      create test/mailers/.keep
      create test/models
      create test/models/.keep
      create test/helpers
      create test/helpers/.keep
      create test/integration
      create test/integration/.keep
      create test/test_helper.rb
      create tmp/cache
      create tmp/cache/assets
      create vendor/assets/javascripts
      create vendor/assets/javascripts/.keep
      create vendor/assets/stylesheets
      create vendor/assets/stylesheets/.keep
         run bundle install
 
 
Your user account isn’t allowed to install to the system Rubygems.
  You can cancel this installation and run:
 
      bundle install —path vendor/bundle
 
  to install the gems into ./vendor/bundle/, or you can enter your password
  and 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.
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!
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;
 = 1.9.1 : gem install rdoc-data;
>= 1.9.2 : nothing to do!
         run bundle exec spring binstub —all
Warning: You’re using Rubygems 2.0.14 with Spring.
* bin/rake: spring inserted
* bin/rails: spring inserted

Вы можете просмотреть структуру каталогов платформы веб-приложения Rails в своем приложении:

1
2
3
4
5
$ cd blog
$ ls
Gemfile Rakefile config lib test
Gemfile.lock app config.ru log tmp
README.rdoc bin db public vendor

Вот вид из руководства по началу работы, показывающий, как Rails полагается на соглашение по конфигурации:

Что такое соглашение о структуре каталогов Ruby on Rails?

Наконец, вы можете запустить свой сервер из командной строки:

1
2
3
4
5
6
7
8
9
$ bin/rails server
Warning: You’re using Rubygems 2.0.14 with Spring.
=> 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:

Что такое страница приветствия Ruby on Rails для нового приложения

Я должен сказать, я хотел бы, чтобы все это было немного чище. Тем не менее, есть некоторые замечательные ресурсы сообщества, которые помогут вам расти.

Вот пример бесплатной заставки GoRails, охватывающей базовую архитектуру приложения, показанную в каталоге выше:

А сам Rails Guide проведет вас через ряд начальных шагов:

Что такое Ruby on Rails Руководство по началу работы Содержание

В целом, существует большое количество письменных и обучающих уроков, которые помогут вам.

Если вы заинтригованы качеством Ruby on Rails и его сообществом, я надеюсь, что вы нашли это введение полезной отправной точкой. Возможно, вы даже пробовали установить выше.

В последнее время я заинтригован открытым исходным кодом Apple Swift, захватывающего участника в пространстве объектно-ориентированного языка программирования, похожего на Ruby с аналогичным долгосрочным потенциалом для Rails.

Хотя в прошлом я работал с Rails, у меня также были проблемы с этим, особенно с хостингом и расширением функциональности — я также нашел, что хостинг это дороже. Я продолжаю чувствовать себя наиболее комфортно с Yii , о котором вы можете прочитать в нашей серии программирования Envato Tuts + Yii2 . И с появлением PHP 7 будущее выглядит более быстрым и светлым для основанных на PHP сред программирования.

Если у вас есть вопросы, пожалуйста, напишите их ниже. Или вы можете связаться со мной в Twitter @reifman . Пожалуйста, посетите мою страницу инструктора Envato Tuts +, чтобы увидеть другие учебники, которые я написал, такие как Использование социальных сетей для поиска свидетелей , в которых рассказывается о API Instagram и Twitter.