User Tools

Site Tools


Sidebar


Здравствуйте!

Меня зовут Михаил!
Я системный администратор
и наполняю эту wiki,
решая разнообразные IT-задачки.

Моя специализация - виртуализация!

Я всегда готов помочь Вам
наладить IT-инфраструктуру
за скромное вознаграждение!

mike@autosys.tk
+7 (910) 911-96-23

rubyonrails:начало-работы-с-rubyonrails

Учебник по RubyOnRails есть тут: http://www.rusrails.ru/rusrails.all.pdf

Установка RubyOnRails

Устанавливаем RVM (“Ruby Version Manager”).

curl -L https://get.rvm.io | bash -s stable --ruby

После установки запускаем его:

source /usr/local/rvm/scripts/rvm

Убедиться в том, что все зависимости удовлетворены можно командой

rvm requirements

Если в выводе этой команды есть неудовлетворенные зависимости, то устанавливаем указанные пакеты командой:

rvmsudo apt-get install build-essential openssl

Дальше устанавливаем Ruby, хотя скорее всего он уже установился сам:

rvm install 2.0.0

Номер актуальной версии можно найти тут: http://rubyinstaller.org/

Можно принудительно указать какую версию Ruby использовать:

rvm use 2.0.0 --default

Теперь устанавливаем RubyGems:

rvm rubygems current

И, наконец, устанавливаем Rails:

gem install rails

Для работы многих компонент также требуется JavaRuntime (nodejs). Устанавливаем:

apt-get install nodejs

- в Ubuntu

или в дебиан:

apt-get install python g++ make
cd /usr/src
mkdir node_js
cd $_
wget http://nodejs.org/dist/node-latest.tar.gz
tar -xf node-latest.tar.gz
cd node-v*
./configure --prefix=/opt/nodejs
make
make install

Для проверки надо запустить rake.
Если он сообщает, что

rake aborted!
Could not find a JavaScript runtime. See https://github.com/sstephenson/execjs for a list of available runtimes.
/usr/local/rvm/gems/ruby-2.0.0-p247/gems/execjs-2.0.2/lib/execjs/runtimes.rb:51:in `autodetect'

Значит надо отредактировать файл /usr/local/rvm/gems/ruby-2.0.0-p247/gems/execjs-2.0.2/lib/execjs/runtimes.rb, а именно в секции

  Node = ExternalRuntime.new(
      :name        => "Node.js (V8)",
      :command     => ["nodejs", "/usr/local/bin/node"],
      :runner_path => ExecJS.root + "/support/node_runner.js",
      :encoding    => 'UTF-8'
    )

надо указать точный путь к node в строке :command ⇒ "nodejs", "/usr/local/bin/node",.

Создаем первое приложение

Создаем приложение и переходим в папку с ним:

rails new blog
cd ./blog

Конфигурируем параметры доступа к базе данных, редактируя файл ./config/database.yml:

nano ./config/database.yml

После того как доступ к базе данных сконфигурирован создаем базу:

rake db:create

В результате в папке ./db/ появятся базы development.sqlite3 и test.sqlite3.

Все. фактически каркас приложения готов. Запускаем сервер командой

rails server


И теперь по адресу http://_IP_:3000 будет отображаться стандартная заглушка rails.

Остановить сервер можно сочетанием ctrl+c.

В рамках приложения создаются различные среды, в частности - develop и production. Многие действия выполняются по-умолчанию для среды develop, а для применения их к production следует явно указывать среду с помощью аргумента RAILS_ENV=production.

Создаем собственные контролы и вьюхи

Теперь создаем контроллер home и экшн (метод) index в нем:

rails generate controller home index
      create  app/controllers/home_controller.rb
       route  get "home/index"
      invoke  erb
      create    app/views/home
      create    app/views/home/index.html.erb
      invoke  test_unit
      create    test/controllers/home_controller_test.rb
      invoke  helper
      create    app/helpers/home_helper.rb
      invoke    test_unit
      create      test/helpers/home_helper_test.rb
      invoke  assets
      invoke    coffee
      create      app/assets/javascripts/home.js.coffee
      invoke    scss
      create      app/assets/stylesheets/home.css.scss

Файл app/views/home/index.html.erb - это шаблон, используемый для отображения результатов работы метода index, контроллера home.
Отредактируем его так, чтобы он содержал:

<h1>Привет! это первое приложение Rails!!!</h1>

Теперь надо натсроить дефолтную страницу приложения. Для этого редактируем маршрутный файл приложения ./config/routes.rb.
В нем надо найти строку root, раскомментировать ее и отредактировать так:

   root 'home#index'

То есть маршрутный файл должен состоять из трех строк:

Blog::Application.routes.draw do
   root 'home#index'
end

Создаем ресурс с помощью Scaffolding

Scaffolding - это способ быстрого создания ресурсов из шаблона. Безусловно, код выдаваемый scaffolding требует редактирования, но вцелом существенно упрощает и ускоряет разработку.

Выполняем команду:

rails generate scaffold Post name:string title:string content:text

Вывод:

      invoke  active_record
      create    db/migrate/20131029133402_create_posts.rb
      create    app/models/post.rb
      invoke    test_unit
      create      test/models/post_test.rb
      create      test/fixtures/posts.yml
      invoke  resource_route
       route    resources :posts
      invoke  scaffold_controller
      create    app/controllers/posts_controller.rb
      invoke    erb
      create      app/views/posts
      create      app/views/posts/index.html.erb
      create      app/views/posts/edit.html.erb
      create      app/views/posts/show.html.erb
      create      app/views/posts/new.html.erb
      create      app/views/posts/_form.html.erb
      invoke    test_unit
      create      test/controllers/posts_controller_test.rb
      invoke    helper
      create      app/helpers/posts_helper.rb
      invoke      test_unit
      create        test/helpers/posts_helper_test.rb
      invoke    jbuilder
      create      app/views/posts/index.json.jbuilder
      create      app/views/posts/show.json.jbuilder
      invoke  assets
      invoke    coffee
      create      app/assets/javascripts/posts.js.coffee
      invoke    scss
      create      app/assets/stylesheets/posts.css.scss
      invoke  scss
      create    app/assets/stylesheets/scaffolds.css.scss

В результате создалось несколько файлов.
Первый - db/migrate/20131029133402_create_posts.rb. Это файл миграции базы данных. Он создает в базе таблицу post с двумя строковыми столбцами name и title и текстовым столбцом. Для того чтобы применить изменения в нм описанные выполняем:

rake db:migrate

При этом, по-умолчанию мы работаем в среде develop и для применения этих изменений к среде production нужно выполнить:

rake db:migrate RAILS_ENV=production

Теперь осталось сделать на основной странице приложения ссылку на контроллер posts и проверить что получилось.
Редактируем файл app/views/home/index.html.erb
<%= link_to “My Blog”, posts_path %>

Discussion

Enter your comment. Wiki syntax is allowed:
T N᠎ I O W
 
rubyonrails/начало-работы-с-rubyonrails.txt · Last modified: 2015/04/09 14:08 (external edit)