Selasa, 25 Februari 2014

ActionMailer ( Part 1 )

ActionMailer memungkinkan Anda untuk mengirim email dari web aplikasi yang Anda buat dengan menggunakan class mailer dan view. Sebagai contoh di sini adalah mengirim email pada halaman list user di Admin.

Berikut ini akan dijelaskan cara setting ActionMailer pada aplikasi Rails :

1. Pastikan sudah ada account email yang akan digunakan untuk mengirim email secara default. Biasanya account email yang digunakan adalah account gmail. Pastikan account gmail tersebut IMAP nya sudah di-enable supaya bisa mengirim email dari aplikasi kita. Pada account gmail Anda, pilih Setting lalu pilih tab Forwarding and POP/IMAP lalu pilih radio button Enable IMAP.



2. Setelah account Gmail tersebut disetting, lalu kita setting mailer SMTP pada aplikasi kita. Ubah file config/environment/development.rb atau config/environment/production.rb  dan ubah sesuai account gmail yang akan diset sebagai pengirim seperti email dan password nya.
#Gmail SMTP
  config.action_mailer.delivery_method = :smtp
  config.action_mailer.smtp_settings = {
    :address              => "smtp.gmail.com",
    :port                 => 587,
    :domain               => 'localhost:3000',
    :user_name            => 'username@email.com',
    :password             => 'yourpassword',
    :authentication       => 'plain',
    :enable_starttls_auto => true  }
Setelah langkah di atas sudah diikuti, lalu kita buat mailernya misalkan user_mailer. Ketikkan pada console 
rails g mailer UserMailer
Seperti yang Anda lihat, Anda dapat menghasilkan mailer seperti Anda menggunakan generator lain dengan Rails. Mailer secara konseptual mirip dengan controller, sehingga kita mendapatkan mailer, sebuah direktori untuk view dan test.

Setelah itu edit mailer yang baru dibuat tersebut dengan set default email dengan alamat email yang sudah ditentukan
class UserMailer < ActionMailer::Base
  default from: "from@example.com"
end
Sebagai contoh, kita buat method welcome_email yang maksudnya mengirim email kepada user yang baru dibuat.
class UserMailer < ActionMailer::Base
  default from: "from@example.com"

  def welcome_email(user)
   @user = user
   @url = "http://localhost:3000"
   mail(:to => @user.email, :subject => "Welcome to my awesome site")
  end
end
Lalu pada model user, buat callback after_create seperti ini 
class User < ActiveRecord::Base
  after_create :send_welcome_email

  def send_welcome_email(user)
    UserMailer.welcome_email(self).deliver
  end
end
Lalu kita buat viewnya 
<!DOCTYPE html>
<html>
  <head>
    <meta content='text/html; charset=UTF-8' http-equiv='Content-Type' />
  </head>
  <body>
    <h1>Welcome to example.com, <%= @user.name %></h1>
    <p>
      You have successfully signed up to example.com,
      your username is: <%= @user.login %>.<br/>
    </p>
    <p>
      To login to the site, just follow this link: <%= @url %>.
    </p>
    <p>Thanks for joining and have a great day!</p>
  </body>
</html>
Setelah itu, baru kita bisa mencoba membuat user dan email akan terkirim secara otomatis ke user yang baru dibuat.

Sumber lengkap : http://guides.rubyonrails.org/action_mailer_basics.html

Selamat mencoba dan happy coding :)

Selasa, 18 Februari 2014

Installasi CKeditor pada aplikasi Ruby on Rails

CKEditor adalah editor teks HTML yang siap untuk digunakan dan dirancang untuk menyederhanakan pembuatan konten web. Dari mulai menyisipkan link, mengubah warna text, mengubah font, menambahkan bullet and numbering dan masih banyak fitur lainnya. Misalnya Anda ingin membuat sebuah konten dalam web yang menampilkan paragraf bergambar. Dengan Ckeditor akan lebih mudah dalam pembuatannya, proses pembuatannya mirip sekali dengan editor di Microsoft Word atau word editor yang lain. Namun tentunya dengan CKeditor pembuatannya akan lebih sederhana.

Berikut ini akan dijelaskan installasi CKeditor pada aplikasi Ruby on Rails :

  1. Tambahkan gem ckeditor pada Gemfile, lalu jalankan bundle install
gem 'ckeditor'
    2.  Untuk generate model file upload biasanya menggunakan gem paperclip. Tambahkan terlebih dahulu gem paperclip di Gemfile lalu jalankan ini di console
gem 'paperclip'
rails generate ckeditor:install --orm=active_record --backend=paperclip
   3. Misalkan aplikasi yang kita buat adalah membuat blog. Agar lebih mudah gunakan scaffold untuk menggenerate controller dan modelnya.
rails generate scaffold blogs
4.  Setelah digenerate di console, untuk model blog tambahkan 2 kolom misalkan kolom untuk 'title' dan 'body'. Lalu jalankan perintah rake db:migrate
class CreateBlogs < ActiveRecord::Migration
  def change
    create_table :blogs do |t|
      t.string :title
      t.text :body
      t.timestamps
    end
  end
end

5.  Setelah itu include ckeditor javascript pada file application.js
//= require ckeditor/init
Bila aplikasi yang dibuat menggunakan rails 4, maka include ini terlebih dahulu sebelum ckeditor/init pada file application.js
//= require ckeditor/override
//= require ckeditor/init
catatan: apabila membuatnya di OS Windows terjadi error, hapus baris ini :
//= require ckeditor/override

6.  Baru setelah itu kita bisa menyisipkan ckeditor pada form yang akan dibuat. Misalkan kita akan membuat halaman create new blog. Pada bagian body, cukup tambahkan cktext_area untuk memuat ckeditornya.
<%= f.label :title %>:<span><%= f.text_field :title %></span>
 <br/>
<%= f.label :body %>:
 <br/>
<%= f.cktext_area :body, :width => 100 %>
<%= f.submit %>
Hasilnya kurang lebih akan terlihat seperti ini


Selamat mencoba dan happy coding :)