Ruby on Rails tutorial

From Nasza Pasja - Programowanie

Zachęcam do współtworzenia tego tutorialu jako że materiałów po polsku jest naprawdę niewiele. Każde choćby drobne uzupełnienie bardzo mile widziane.

Spis treści

Instalacja

Windows

Pobieramy z http://rubyforge.org/frs/?group_id=167

Next, Next, Next, Enable RubyGems, Next, Done

  • Z menu start uruchamiamy RubyGems Package Manager i wpisujemy:
 gem install rails --include-dependencies

Linux

Gentoo

 emerge rails


Ubuntu (<= 6.06)

 sudo apt-get install rails

Start

Z linii poleceń wpisujemy:

 rails cos

Co tworzy nam szkielet projektu w katalogu dupa. Co dokładnie tam jest zostanie opisane dalej. Wchodzimy do cos:

 cd cos

I uruchamiamy serwer:

 ruby script/server

A teraz za pomocą swojej ulubionej przeglądarki udajemy się pod adres: http://localhost:3000

IT'S ALIVE !!!

Wprowadzenie

Kilka słów wstępu i opisu ideologii całego framework'a jest niezbędne, szczególnie jezeli przerzucasz się np. z PHP. Po pierwsze, RoR opiera się na technologii MVC

Podniecenie

Stworzymy teraz bardzo prostą aplikację korzystając ze scaffolda. Ten numer jest w każdym tutorialu Ruby on Rails choć nie jest to nic specjalnego w stosunku do całej potęgi RoR.

Potrzebna będzie baza danych (załóżmy że MySQL). Zakładamy że mamy już wygenerowany projekt dupa (patrz wyżej) i jesteśmy w katalogu projektu.

  • Edytujemy plik config/database.yml - w tej chwili interesuje nas sekcja development, ustawiamy hosta, login i hasło.

Przykładowa zawartość pliku jeżeli korzystamy z bazy MySQL:

development:
  adapter: mysql
  database: baza_development
  username: admin
  password: costam
  host: localhost

test:
  development

production:
  adapter: mysql
  database: baza
  username: root
  password: costam
  host: localhost

Czyli zakładam że masz na localhoście bazę MySQL o nazwie baza.

Zrobimy sobie listę książek. Najpierw, generujemy model książki, z przyzwyczajenia trzymam się angielskiego nazewnictwa (co zresztą wcale nie jest złym zwyczajem). Tak więc w głównym katalogu projektu, z linii poleceń wpisujemy

 ruby script/generate model book

Zobaczymy coś w stylu:

      exists  app/models/
      exists  test/unit/
      exists  test/fixtures/
      create  app/models/book.rb
      create  test/unit/book_test.rb
      create  test/fixtures/books.yml
      create  db/migrate
      create  db/migrate/001_create_books.rb

Dobieramy się teraz do pliku db/migrate/001_create_books.rb - po naszej edycji powinien on wyglądać następująco:

class CreateBooks < ActiveRecord::Migration
  def self.up
    create_table :books do |t|
      t.column :title, :string
      t.column :description, :text
    end
  end

  def self.down
    drop_table :books
  end
end

I wykonujemy polecenie:

 rake db:migrate

(Więcej info o tym co zrobiłeś: Ruby on Rails: Migracje)

I o ile dobrze skonfigurowaliśmy bazę w config/database.yml i rzeczywiście ona działa, pokazuje się:

(in /projects/baza)
== CreateBooks: migrating =====================================================
-- create_table(:books)
   -> 0.0365s
== CreateBooks: migrated (0.0369s) ============================================

Ciekawskich zapraszam do obejrzenia co teraz znajduje się w bazie danych baza_development.

Kolejnym krokiem jest stworzenie kontrolerów dla naszych danych:

 ruby script/generate scaffold book

i uruchomienie serwera (domyślnie na porcie 3000):

 ruby script/server

Kolejnym krokiem jest po prostu odpalenie w naszej przeglądarce adresu: http://localhost:3000/books

Miłej zabawy z Rails!

CreateBooks: migrating ===================================================

-- create_table(:books)

  -> 0.0365s

CreateBooks: migrated (0.0369s) ==========================================

</pre>

Ciekawskich zapraszam do obejrzenia co teraz znajduje się w bazie danych baza_development

== CreateBooks: migrating =====================================================
-- create_table(:books)
   -> 0.0365s
== CreateBooks: migrated (0.0369s) ============================================

Ciekawskich zapraszam do obejrzenia co teraz znajduje się w bazie danych baza_development