В связи с нарастанием истерии вокруг Ruby on Rails мы решили не оставаться в стороне. Почему мы должны установить Ruby on Rails и зачем его использовать? Да хотя бы потому, что Ruby был создан японцом Юкихиро Мацумото (Matz) в 1993, а всё японское как правило качественное!:)) Ещё одной из причин установки Ruby on Rails может быть его использование в проектах NASA, NOAA, Motorola и других крупных организациях!:))
Ruby on Rails предоставляет архитектурный образец Model-View-Controller (модель-представление-контроллер) для веб-приложений, а также обеспечивает их интеграцию с веб-сервером и сервером базы данных. Полный список возможностей Ruby гульчитаем тут http://ru.wikipedia.org/wiki/Ruby
Я ещё не в полной мере понимаю на кой шиш мне нужен этот новый велосипед по имени Ruby on Rails когда уже есть велосипед по имени PHP имеющий более древние корни (произошел в 1994 от набора скриптов на Perl/CGI 1987) чем Ruby on Rails (разрабатывается с 1993) но, как отвечала бабушка внучаре на его письмо из армии где он хвастался тем, что на стрельбище все ездят на автобусе, а он на машине - нет, ты внучара будь как все, все ездят на автобусе и ты купи себе автобус и тоже ездь на автобусе! Вот и мы установим Ruby on Rails под Windows XP и будем на нём иногда ездить:)
Установка Ruby on Rails под Windows XP
Для установки Ruby on Rails под Windows XP использовались самые последние версии ПО на момент написания сего материала:
- Ruby - ruby-1.9.3-p125-i386-mingw32.7z
- RubyGems - rubygems-1.8.24.zip
- DevKit - DevKit-tdm-32-4.5.2-20111229-1559-sfx.exe
Для установки Ruby на рельсы скачаем и распакуем сам Ruby http://rubyonrails.org/download http://rubyforge.org/frs/?group_id=167, например в каталог G:\RUBY\. Установим в переменной PATH, можно только для текущего пользователя, полный путь к каталогу G:\RUBY\bin и перезапустить консоль. Справку по интерпретатору ruby можно получить командой ruby --help.
Дальше скачиваем RubyGems http://rubygems.org/pages/download (менеджер пакетов фреймворка Ruby on Rails) и выгружаем содержимое, например в каталог G:\RUBY\rubygems. Из каталога G:\RUBY\rubygems выполним ruby setup.rb --help
G:\RUBY\rubygems>ruby setup.rb --help Usage: gem setup [options] Options: --prefix=PREFIX Prefix path for installing RubyGems Will not affect gem repository location --destdir=DESTDIR Root directory to install RubyGems into Mainly used for packaging RubyGems --[no-]vendor Install into vendorlibdir not sitelibdir --[no-]format-executable Makes `gem` match ruby If ruby is ruby18, gem will be gem18 --[no-]rdoc Generate RDoc documentation for RubyGems --[no-]ri Generate RI documentation for RubyGems Common Options: -h, --help Get help on this command -V, --[no-]verbose Set the verbose level of output -q, --quiet Silence commands --config-file FILE Use this config file instead of default --backtrace Show stack backtrace on errors --debug Turn on Ruby debugging Summary: Install RubyGems Description: Installs RubyGems itself. RubyGems installs RDoc for itself in GEM_HOME. By default this is: G:/RUBY/lib/ruby/gems/1.9.1 If you prefer a different directory, set the GEM_HOME environment variable. RubyGems will install the gem command with a name matching ruby's prefix and suffix. If ruby was installed as `ruby18`, gem will be installed as `gem18`. By default, this RubyGems will install gem as: gem Defaults: --format-executable --rdoc --ri
Так как мы предпочитаем отделять мухи от котлет, то установку мы выполним в каталог отличный от каталога по умолчанию, а для этого создадим каталог G:\RUBY\gem и установим полный путь к нему в переменную, можно только для текущего пользователя, GEM_HOME после чего снова перезапустим консоль и выполним ruby setup.rb --help:
G:\RUBY\rubygems>ruby setup.rb --help Usage: gem setup [options] Options: --prefix=PREFIX Prefix path for installing RubyGems Will not affect gem repository location --destdir=DESTDIR Root directory to install RubyGems into Mainly used for packaging RubyGems --[no-]vendor Install into vendorlibdir not sitelibdir --[no-]format-executable Makes `gem` match ruby If ruby is ruby18, gem will be gem18 --[no-]rdoc Generate RDoc documentation for RubyGems --[no-]ri Generate RI documentation for RubyGems Common Options: -h, --help Get help on this command -V, --[no-]verbose Set the verbose level of output -q, --quiet Silence commands --config-file FILE Use this config file instead of default --backtrace Show stack backtrace on errors --debug Turn on Ruby debugging Summary: Install RubyGems Description: Installs RubyGems itself. RubyGems installs RDoc for itself in GEM_HOME. By default this is: G:/RUBY/gem ..................................
Теперь все пакеты фреймворка Ruby on Rails будут установлены в GEM_HOME каталог G:/RUBY/gem. Для выполнения ruby setup.rb на офф. сайте говорится, что мол (you may need admin/root privilege) возможно нужны права администратора но, в нашем случае таковые не потребовались:
G:\RUBY\rubygems>ruby setup.rb
RubyGems 1.8.24 installed
== 1.8.24 / 2012-04-27
* 1 bug fix:
* Install the .pem files properly. Fixes #320
* Remove OpenSSL dependency from the http code path
------------------------------------------------------------------------------
RubyGems installed the following executables:
G:/RUBY/bin/gemПосле установки менеджер пакетов Фреймворка (Ruby on Rails) rubygems (ruby setup.rb) каталог G:\RUBY\rubygems можно удалить.
Если для ruby.exe запрещён доступ в сеть, то на команду gem install rails получим ошибку:
G:\RUBY>gem install rails ERROR: Could not find a valid gem 'rails' (>= 0) in any repository ERROR: Possible alternatives: rails
Нужно разрешить для ruby.exe доступ в сеть и повторить gem install rails установку Фреймворка Ruby on Rails:
G:\RUBY>gem install rails Fetching: i18n-0.6.0.gem (100%) Fetching: multi_json-1.3.6.gem (100%) Fetching: activesupport-3.2.5.gem (100%) Fetching: builder-3.0.0.gem (100%) Fetching: activemodel-3.2.5.gem (100%) Fetching: rack-1.4.1.gem (100%) Fetching: rack-cache-1.2.gem (100%) Fetching: rack-test-0.6.1.gem (100%) Fetching: journey-1.0.3.gem (100%) Fetching: hike-1.2.1.gem (100%) Fetching: tilt-1.3.3.gem (100%) Fetching: sprockets-2.1.3.gem (100%) Fetching: erubis-2.7.0.gem (100%) Fetching: actionpack-3.2.5.gem (100%) Fetching: arel-3.0.2.gem (100%) Fetching: tzinfo-0.3.33.gem (100%) Fetching: activerecord-3.2.5.gem (100%) Fetching: activeresource-3.2.5.gem (100%) Fetching: mime-types-1.18.gem (100%) Fetching: polyglot-0.3.3.gem (100%) Fetching: treetop-1.4.10.gem (100%) Fetching: mail-2.4.4.gem (100%) Fetching: actionmailer-3.2.5.gem (100%) Fetching: rack-ssl-1.3.2.gem (100%) Fetching: thor-0.15.2.gem (100%) Fetching: railties-3.2.5.gem (100%) Fetching: bundler-1.1.4.gem (100%) Fetching: rails-3.2.5.gem (100%) Successfully installed i18n-0.6.0 Successfully installed multi_json-1.3.6 Successfully installed activesupport-3.2.5 Successfully installed builder-3.0.0 Successfully installed activemodel-3.2.5 Successfully installed rack-1.4.1 Successfully installed rack-cache-1.2 Successfully installed rack-test-0.6.1 Successfully installed journey-1.0.3 Successfully installed hike-1.2.1 Successfully installed tilt-1.3.3 Successfully installed sprockets-2.1.3 Successfully installed erubis-2.7.0 Successfully installed actionpack-3.2.5 Successfully installed arel-3.0.2 Successfully installed tzinfo-0.3.33 Successfully installed activerecord-3.2.5 Successfully installed activeresource-3.2.5 Successfully installed mime-types-1.18 Successfully installed polyglot-0.3.3 Successfully installed treetop-1.4.10 Successfully installed mail-2.4.4 Successfully installed actionmailer-3.2.5 Successfully installed rack-ssl-1.3.2 Successfully installed thor-0.15.2 Successfully installed railties-3.2.5 Successfully installed bundler-1.1.4 Successfully installed rails-3.2.5 28 gems installed Installing ri documentation for i18n-0.6.0... Installing ri documentation for multi_json-1.3.6... Installing ri documentation for activesupport-3.2.5... Installing ri documentation for builder-3.0.0... Installing ri documentation for activemodel-3.2.5... Installing ri documentation for rack-1.4.1... Installing ri documentation for rack-cache-1.2... Installing ri documentation for rack-test-0.6.1... Installing ri documentation for journey-1.0.3... Installing ri documentation for hike-1.2.1... Installing ri documentation for tilt-1.3.3... Installing ri documentation for sprockets-2.1.3... Installing ri documentation for erubis-2.7.0... Installing ri documentation for actionpack-3.2.5... Installing ri documentation for arel-3.0.2... Installing ri documentation for tzinfo-0.3.33... Installing ri documentation for activerecord-3.2.5... Installing ri documentation for activeresource-3.2.5... Installing ri documentation for mime-types-1.18... Installing ri documentation for polyglot-0.3.3... Installing ri documentation for treetop-1.4.10... Installing ri documentation for mail-2.4.4... Installing ri documentation for actionmailer-3.2.5... Installing ri documentation for rack-ssl-1.3.2... Installing ri documentation for thor-0.15.2... Installing ri documentation for railties-3.2.5... Installing ri documentation for bundler-1.1.4... Installing ri documentation for rails-3.2.5... file 'lib' not found Installing RDoc documentation for i18n-0.6.0... Installing RDoc documentation for multi_json-1.3.6... Installing RDoc documentation for activesupport-3.2.5... Installing RDoc documentation for builder-3.0.0... Installing RDoc documentation for activemodel-3.2.5... Installing RDoc documentation for rack-1.4.1... Installing RDoc documentation for rack-cache-1.2... Installing RDoc documentation for rack-test-0.6.1... Installing RDoc documentation for journey-1.0.3... Installing RDoc documentation for hike-1.2.1... Installing RDoc documentation for tilt-1.3.3... Installing RDoc documentation for sprockets-2.1.3... Installing RDoc documentation for erubis-2.7.0... Installing RDoc documentation for actionpack-3.2.5... Installing RDoc documentation for arel-3.0.2... Installing RDoc documentation for tzinfo-0.3.33... Installing RDoc documentation for activerecord-3.2.5... Installing RDoc documentation for activeresource-3.2.5... Installing RDoc documentation for mime-types-1.18... Installing RDoc documentation for polyglot-0.3.3... Installing RDoc documentation for treetop-1.4.10... Installing RDoc documentation for mail-2.4.4... Installing RDoc documentation for actionmailer-3.2.5... Installing RDoc documentation for rack-ssl-1.3.2... Installing RDoc documentation for thor-0.15.2... Installing RDoc documentation for railties-3.2.5... Installing RDoc documentation for bundler-1.1.4... Installing RDoc documentation for rails-3.2.5... file 'lib' not found
После установки все Gem-ы вместе с документацией затянут почти на 100 МВ (86.4 МВ) + сам Ruby почти 60 МВ. Теперь нам осталось добавить полный путь к G:\RUBY\gem\bin в переменную PATH, можно только для текущего пользователя, иначе при попытке создать новый каркас приложения получим:
"rails" не является внутренней или внешней командой, исполняемой программой или пакетным файлом.
Справку по менеджеру пакетов RubyGems Фреймворка Ruby on Rails можно получить командой gem -h, дополнительно на http://docs.rubygems.org/
G:\RUBY>gem -h RubyGems is a sophisticated package manager for Ruby. This is a basic help message containing pointers to more information. Usage: gem -h/--help gem -v/--version gem command [arguments...] [options...] Examples: gem install rake gem list --local gem build package.gemspec gem help install Further help: gem help commands list all 'gem' commands gem help examples show some examples of usage gem help platforms show information about platforms gem help <COMMAND> show help on COMMAND (e.g. 'gem help install') gem server present a web page at http://localhost:8808/ with info about installed gems Further information: http://rubygems.rubyforge.org
Более подробную информацию по отдельной команде можно получить выполнив например gem help install. Для обновления RubyGems нужно выполнить gem update --system:
G:\RUBY>gem update --system
Latest version currently installed. Aborting.Для обновления rails выполняем gem update rails --include-dependencies:
G:\RUBY>gem update rails --include-dependencies
Updating installed gems
Nothing to updateПробуем создать свой первый каркас приложения Ruby on Rails:
G:\RUBY>rails new G:\EXAMPLE\rubyforge.org\test-project exist create README.rdoc create Rakefile create config.ru create .gitignore create Gemfile create app create app/assets/images/rails.png 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/mailers create app/models create app/views/layouts/application.html.erb create app/mailers/.gitkeep create app/models/.gitkeep create config create config/routes.rb create config/application.rb create config/environment.rb create config/environments create config/environments/development.rb create config/environments/production.rb create config/environments/test.rb create config/initializers create config/initializers/backtrace_silencers.rb create config/initializers/inflections.rb create config/initializers/mime_types.rb create config/initializers/secret_token.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 doc create doc/README_FOR_APP create lib create lib/tasks create lib/tasks/.gitkeep create lib/assets create lib/assets/.gitkeep create log create log/.gitkeep create public create public/404.html create public/422.html create public/500.html create public/favicon.ico create public/index.html create public/robots.txt create script create script/rails create test/fixtures create test/fixtures/.gitkeep create test/functional create test/functional/.gitkeep create test/integration create test/integration/.gitkeep create test/unit create test/unit/.gitkeep create test/performance/browsing_test.rb create test/test_helper.rb create tmp/cache create tmp/cache/assets create vendor/assets/javascripts create vendor/assets/javascripts/.gitkeep create vendor/assets/stylesheets create vendor/assets/stylesheets/.gitkeep create vendor/plugins create vendor/plugins/.gitkeep run bundle install Fetching gem metadata from https://rubygems.org/......... Using rake (0.9.2.2) Using i18n (0.6.0) Using multi_json (1.3.6) Using activesupport (3.2.5) Using builder (3.0.0) Using activemodel (3.2.5) Using erubis (2.7.0) Using journey (1.0.3) Using rack (1.4.1) Using rack-cache (1.2) Using rack-test (0.6.1) Using hike (1.2.1) Using tilt (1.3.3) Using sprockets (2.1.3) Using actionpack (3.2.5) Using mime-types (1.18) Using polyglot (0.3.3) Using treetop (1.4.10) Using mail (2.4.4) Using actionmailer (3.2.5) Using arel (3.0.2) Using tzinfo (0.3.33) Using activerecord (3.2.5) Using activeresource (3.2.5) Using bundler (1.1.4) Installing coffee-script-source (1.3.3) Installing execjs (1.4.0) Installing coffee-script (2.2.0) Using rack-ssl (1.3.2) Installing json (1.7.3) Gem::InstallError: The 'json' native gem requires installed build tools. Please update your PATH to include build tools or download the DevKit from 'http://rubyinstaller.org/downloads' and follow the instructions at 'http://github.com/oneclick/rubyinstaller/wiki/Development-Kit' An error occured while installing json (1.7.3), and Bundler cannot continue. Make sure that `gem install json -v '1.7.3'` succeeds before bundling.
Что ж атака захлебнулась, не хватает build tools. Мол "update your PATH to include build tools" или "download the DevKit" и следуйте инструкциям на http://github.com/oneclick/rubyinstaller/wiki/Development-Kit.
Ох.., наша работа и опасна и трудна и на первый взгляд как будто не видна... А DevKit это ещё почти 170 МВ минус на диске где этих DevKit-ов хоть жо.ой жуй. Ну не останавливаться же на пол пути - хрен с ним, download the DevKit DevKit-tdm-32-4.5.2-20111229-1559-sfx.exe...
Извлекаем файлы в каталог G:\RUBY\DevKit\ и прописываем полный путь к G:\RUBY\DevKit\bin в переменную PATH, можно только для текущего пользователя, пытаемся инициализировать DevKit "ruby dk.rb init" и проверяем конфигурацию "ruby dk.rb review":
G:\RUBY>cd G:\RUBY\DevKit> G:\RUBY\DevKit>ruby dk.rb init Initialization complete! Please review and modify the auto-generated 'config.yml' file to ensure it contains the root directories to all of the installed Rubies you want enhanced by the DevKit. G:\RUBY\DevKit>ruby dk.rb review Based upon the settings in the 'config.yml' file generated from running 'ruby dk.rb init' and any of your customizations, DevKit functionality will be injected into the following Rubies when you run 'ruby dk.rb install'. Invalid configuration. Please fix 'config.yml.'
На просьбу "fix 'config.yml.'" в файле config.yml пропишем полный путь к каталогу где установлен RUBY:
# This configuration file contains the absolute path locations of all # installed Rubies to be enhanced to work with the DevKit. This config # file is generated by the 'ruby dk.rb init' step and may be modified # before running the 'ruby dk.rb install' step. To include any installed # Rubies that were not automagically discovered, simply add a line below # the triple hyphens with the absolute path to the Ruby root directory. # # Example: # # --- # - C:/ruby19trunk # - C:/ruby192dev # --- - G:\RUBY\
Снова проверяем конфигурацию DevKit "ruby dk.rb review" и если всё гуд устанавливаем DevKit "ruby dk.rb install":
G:\RUBY\DevKit>ruby dk.rb review Based upon the settings in the 'config.yml' file generated from running 'ruby dk.rb init' and any of your customizations, DevKit functionality will be injected into the following Rubies when you run 'ruby dk.rb install'. G:\RUBY\DevKit>ruby dk.rb install [INFO] Updating convenience notice gem override for 'G:/RUBY' [INFO] Installing 'G:/RUBY/lib/ruby/site_ruby/devkit.rb'
Снова пробуем создать свой первый каркас приложения Ruby on Rails:
G:\RUBY\DevKit>rails new G:\EXAMPLE\rubyforge.org\test-project exist create README.rdoc create Rakefile create config.ru create .gitignore create Gemfile create app create app/assets/images/rails.png 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/mailers create app/models create app/views/layouts/application.html.erb create app/mailers/.gitkeep create app/models/.gitkeep create config create config/routes.rb create config/application.rb create config/environment.rb create config/environments create config/environments/development.rb create config/environments/production.rb create config/environments/test.rb create config/initializers create config/initializers/backtrace_silencers.rb create config/initializers/inflections.rb create config/initializers/mime_types.rb create config/initializers/secret_token.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 doc create doc/README_FOR_APP create lib create lib/tasks create lib/tasks/.gitkeep create lib/assets create lib/assets/.gitkeep create log create log/.gitkeep create public create public/404.html create public/422.html create public/500.html create public/favicon.ico create public/index.html create public/robots.txt create script create script/rails create test/fixtures create test/fixtures/.gitkeep create test/functional create test/functional/.gitkeep create test/integration create test/integration/.gitkeep create test/unit create test/unit/.gitkeep create test/performance/browsing_test.rb create test/test_helper.rb create tmp/cache create tmp/cache/assets create vendor/assets/javascripts create vendor/assets/javascripts/.gitkeep create vendor/assets/stylesheets create vendor/assets/stylesheets/.gitkeep create vendor/plugins create vendor/plugins/.gitkeep run bundle install Fetching gem metadata from https://rubygems.org/......... Using rake (0.9.2.2) Using i18n (0.6.0) Using multi_json (1.3.6) Using activesupport (3.2.5) Using builder (3.0.0) Using activemodel (3.2.5) Using erubis (2.7.0) Using journey (1.0.3) Using rack (1.4.1) Using rack-cache (1.2) Using rack-test (0.6.1) Using hike (1.2.1) Using tilt (1.3.3) Using sprockets (2.1.3) Using actionpack (3.2.5) Using mime-types (1.18) Using polyglot (0.3.3) Using treetop (1.4.10) Using mail (2.4.4) Using actionmailer (3.2.5) Using arel (3.0.2) Using tzinfo (0.3.33) Using activerecord (3.2.5) Using activeresource (3.2.5) Using bundler (1.1.4) Using coffee-script-source (1.3.3) Using execjs (1.4.0) Using coffee-script (2.2.0) Using rack-ssl (1.3.2) Installing json (1.7.3) with native extensions Installing rdoc (3.12) Using thor (0.15.2) Using railties (3.2.5) Installing coffee-rails (3.2.2) Installing jquery-rails (2.0.2) Using rails (3.2.5) Installing sass (3.1.19) Installing sass-rails (3.2.5) Installing sqlite3 (1.3.6) Installing uglifier (1.2.4) Your bundle is 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; rdoc-data --install = 1.9.1 : gem install rdoc-data; rdoc-data --install >= 1.9.2 : nothing to do! Yay!
Протестировать наше первое приложение Ruby on Rails можно якобы на встроенном сервере запускаемом на порте 3000:
G:\RUBY\DevKit>cd G:\EXAMPLE\rubyforge.org\test-project G:\EXAMPLE\rubyforge.org\test-project>rails server => Booting WEBrick => Rails 3.2.5 application starting in development on http://0.0.0.0:3000 => Call with -d to detach => Ctrl-C to shutdown server Exiting Завершить выполнение пакетного файла [Y(да)/N(нет)]? Y
Увы, полного запуска сего встроенного чудо-сервера я так и не дождался - ресурсов ЦП и терпения не хватило дождаться !:) Картина полного старта rails server должна выглядеть примерно так:
rails server => Booting WEBrick => Rails 3.2.5 application starting in development on http://0.0.0.0:3000 => Call with -d to detach => Ctrl-C to shutdown server [2012-04-06 22:20:36] INFO WEBrick 1.3.1 [2012-04-06 22:20:36] INFO ruby 1.9.3 (2012-02-16) [x86_64-darwin11.2.0] [2012-04-06 22:20:36] INFO WEBrick::HTTPServer#start: pid=28168 port=3000
Более подробную информацию о юзании нового приложения на Ruby on Rails здесь: http://guides.rubyonrails.org/getting_started.html
Установка Ruby on Rails на Apache2 под Windows XP
Установка Ruby on Rails на Apache2 под Windows XP сводится к изменению конфигурации Apache httpd.conf для выполнения Ruby CGI, для чего нужно выполнить несколько несложных манипуляций с httpd.conf:
# находим строку: Options Indexes FollowSymLinks # видоизменяем: Options Indexes FollowSymLinks ExecCGI # находим строку: #AddHandler cgi-script .cgi # видоизменяем: AddHandler cgi-script .cgi .rb
Перезапускаем Apache и создаем тестовую страницу на Ruby test.rb:
#!G:\RUBY\bin\ruby puts "Content-type: text/html" puts "" puts "<html>" puts "<body>" puts "Test Ruby Page." puts "</body>" puts "</html>"
Смотрим на http://localhost/test.rb видим "Test Ruby Page." - радуемся:). Теперь и мы на рельсах, дело за малым - осталось начать ехать;))
На всё про всё ручная установка Ruby on Rails на Apache2 под Windows XP с нуля и без малейшего дупля, с учётом чтения манов и сбора/установки деталей для велосипеда по имени Ruby on Rails, у меня заняла 5-6 часов, а у вас по идее должно получится быстрее...

