Feb 02 2008

Second Online.rb

Hmm… :-? pertemuan semalem unik banget, karena ada saat-saat di mana kami dari tim online di haruskan buat 1 project untuk posting berita. Nah, yang jadi tukang ketik semalem orangnya juga unik dari Jogja lagi ;)) , kadang-kadang lebih sering keluar dari jalur tapi malah menyegarkan suasana :D dan tentu saja kerja keras kami nggak sia-sia. Dalam waktu 30 menit project rails versi 1.2.3 untuk buat posting berita aja udah kelar (itu belum dikurangi 20 menit yang di pake untuk ‘guyon ngalor-ngidulnya’) :-s .

Langsung aja dah aku catat di sini, tapi ingat untuk kali ini kita pake rails versi 1.2.3.

[root@otid htdocs]# rails berita
create
create app/controllers
create app/helpers
create app/models
create app/views/layouts
create config/environments
create components
create db
create doc
create lib
create lib/tasks
create log
create public/images
create public/javascripts
create public/stylesheets
create script/performance
create script/process
create test/fixtures
create test/functional
create test/integration
create test/mocks/development
create test/mocks/test
create test/unit
create vendor
create vendor/plugins
create tmp/sessions
create tmp/sockets
create tmp/cache
create tmp/pids
create Rakefile
create README
create app/controllers/application.rb
create app/helpers/application_helper.rb
create test/test_helper.rb
create config/database.yml
create config/routes.rb
create public/.htaccess
create config/boot.rb
create config/environment.rb
create config/environments/production.rb
create config/environments/development.rb
create config/environments/test.rb
create script/about
create script/breakpointer
create script/console
create script/destroy
create script/generate
create script/performance/benchmarker
create script/performance/profiler
create script/process/reaper
create script/process/spawner
create script/process/inspector
create script/runner
create script/server
create script/plugin
create public/dispatch.rb
create public/dispatch.cgi
create public/dispatch.fcgi
create public/404.html
create public/500.html
create public/index.html
create public/favicon.ico
create public/robots.txt
create public/images/rails.png
create public/javascripts/prototype.js
create public/javascripts/effects.js
create public/javascripts/dragdrop.js
create public/javascripts/controls.js
create public/javascripts/application.js
create doc/README_FOR_APP
create log/server.log
create log/production.log
create log/development.log
create log/test.log
[root@otid htdocs]# cd berita/
[root@otid berita]#

Setelah kita buat projectnya dan tentu saja kemudian kta masuk ke doc root-nya, kemudian kita generate model-nya.

[root@otid berita]# ./script/generate model berita
exists app/models/
exists test/unit/
exists test/fixtures/
create app/models/berita.rb
create test/unit/berita_test.rb
create test/fixtures/beritas.yml
create db/migrate
create db/migrate/001_create_beritas.rb
[root@otid berita]#

Jangan lupa ubah konfigurasi koneksi databasenya di config/database.yml jika diperlukan.

development:
adapter: mysql
database: berita_development
username: root
password:
socket: /opt/lampp/var/mysql/mysql.sock

Buat database berita_development, karena kita pake rails versi 1.2.3 kita tidak bisa menggunakan perintah rake db:create jadi kita harus buat database secara manual bisa melalui console maupun dengan phpmyadmin. Berikut adalah contoh untuk buat database dengan console :

[root@otid ditto]# /opt/lampp/bin/mysql -u root -p
Enter password:
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 3
Server version: 5.0.45 Source distribution

Type ‘help;’ or ‘\h’ for help. Type ‘\c’ to clear the buffer.

mysql> create database berita_development;
Query OK, 1 row affected (0.08 sec)

Setelah database dibuat, kita akan buat 1 tabel (beritas) yang dapat kita atur struktur tabelnya pada file db/migrate/001_create_beritas.rb.

class CreateBeritas < ActiveRecord::Migration
def self.up
create_table :beritas do |t|
t.column “judul”, :string,
:default => “”, :null => false
t.column “isi”, :text,
:default => “”, :null => false
end
end

def self.down
drop_table :beritas
end
end

Kemudian kita buat tabelnya dengan perintah :

[root@otid berita]# rake db:migrate
(in /opt/lampp/htdocs/berita)
== CreateBeritas: migrating ===================================================
– create_table(:beritas)
-> 0.0043s
== CreateBeritas: migrated (0.0045s) ==========================================

[root@otid berita]#

Tabel sudah terbentuk sekarang waktunya kita buat form untuk kirim berita :

[root@otid berita]# script/generate controller berita index new
exists app/controllers/
exists app/helpers/
create app/views/berita
exists test/functional/
create app/controllers/berita_controller.rb
create test/functional/berita_controller_test.rb
create app/helpers/berita_helper.rb
create app/views/berita/index.rhtml
create app/views/berita/new.rhtml
[root@otid berita]#

Lalu kita langsung mengarah pada file app/views/berita/new.rhtml untuk menambahkan beberapa script berikut :

<%= stylesheet_link_tag ’scaffold’ %>
<p style=”width:500px;”>Silakan dilengkapi data di bawah ini</p>

<p><font color=”red”><%= flash[:notice] %></font></p>

<%= error_messages_for :masuk %>
<br />
<strong>Personal Data</strong>
<% form_for :masuk, @masuk, :url => {:action => :proses_insert} do |f| %>
<div id=”head”>
<table>
<tr>
<td>Judul *</td>
<td>:</td>
<td><%= f.text_field :judul, {:size => ‘40′, :maxlength=>’30′} %></td>
</tr>
<tr>
<td>Isi *</td>
<td>:</td>
<td><%= f.text_area :isi %></td>
</tr>
</table>
</div>
<br />
<%= submit_tag ‘Kirim’ %>
<% end %>

Kemudian download file scaffold.css dan letakkan pada path public/stylesheet/scaffold.css. Berikutnya kita ubah berita controller pada file app/controllers/berita_controller.rb. Pada file ini akan terjadi proses insert data ke database dengan menggunakan action => “proses_insert”.

class BeritaController < ApplicationController

def index
end

def new
end

def proses_insert
if request.post?
@masuk=Berita.new(params[:masuk])
if @masuk.save
flash[:notice] = “udah masuk”
redirect_to :action => “new”
else
flash[:notice] = “nggak masuk”
render :action => ‘new’
end
end
end

end

Untuk menambah validasi, misalnya salah field2 dari form untuk posting baru tidak boleh kosong, kita bisa menambah atau mengurangi validasinya pada file app/models/berita.rb.

class Berita < ActiveRecord::Base
validates_presence_of :judul,
:message => “Masukkan Judul”
validates_presence_of :isi,
:message => “Masukkan Isi”
end

Setelah itu jalankan command untuk mengaktifkan webserver pada console.

[root@otid berita]# ./script/server
=> Booting Mongrel (use ’script/server webrick’ to force WEBrick)
=> Rails application starting on http://0.0.0.0:3000
=> Call with -d to detach
=> Ctrl-C to shutdown server
** Starting Mongrel listening at 0.0.0.0:3000
** Starting Rails with development environment…
** Rails loaded.
** Loading any Rails specific GemPlugins
** Signals ready. TERM => stop. USR2 => restart. INT => stop (no restart).
** Rails signals registered. HUP => reload (without restart). It might not work well.
** Mongrel available at 0.0.0.0:3000
** Use CTRL-C to stop.

Lalu kita arahkan browser ke http://localhost:3000/berita/new. Jika program yang kita buat sudah benar, akan tampil seperti berikut :

New Post

Jika kita langsung klik pada button kirim, maka akan tampil seperti gambar di bawah :

New Post Failed

Dan jika kita mengisi kedua field dengan benar, data akan dimasukkan ke database. Dengan suksesnya validasi, diakhiri pula pertemuan kedua Online.rb.

C U next time :-h

3 Responses to “Second Online.rb”

  1. Geng Sarung » Third Online.rb UNITED STATES WordPress 2.3.1 on 09 Feb 2008 at 11:41 am
    Gravatar Icon

    […] online.rb yang ke tiga ini, kami melanjutkan project yang sebelumnya. Kalo pertemuan minggu lalu cuma posting berita tentu saja berbeda dengan yang semalam, kami […]

  2. Gravatar Icon

    […] online.rb yang ke tiga ini, kami melanjutkan project yang sebelumnya. Kalo pertemuan minggu lalu cuma posting berita tentu saja berbeda dengan yang semalam, kami […]

  3. adim_sikiji INDONESIA Windows XP Mozilla Firefox 2.0.0.12 on 02 Mar 2008 at 9:14 pm
    Gravatar Icon

    baru twu aku klo bisa kayak gni
    (cuman mau ngtes gvatar gue), coz kok gak kluar kluar yawww????

Trackback URI | Comments RSS

Leave a Reply

You can also use this smilies by clicking them :
:D :) :)) ;)) :)>- B-) :-j :P :thumbs o:-) ~o) :D/ [-X =)) :-? :-/ :-h :down =D> ^:)^ :metal more »