ROR dan module kernel

26 May 2010 at 12:02 (Tak Berkategori)

Bila anda ingin meng-execute linux command di ruby. Anda bisa menggunakan 4 macam cara, yaitu : system, exec, %x, dan `. Tapi bila anda ingin mendapatkan hasil returnnya, kalau dari contoh dibawah saya berusaha untuk mendapatkan nilai string “wordpress.shunam.co.cc is an alias for shunam.wordpress.com.”, silahkan anda lihat sendiri :

SYSTEM
>> hasil = system(‘host -t cname wordpress.shunam.co.cc’)
wordpress.shunam.co.cc is an alias for shunam.wordpress.com.
=> true
>> hasil
=> true
EXEC ( langsung keluar setelah melaksanakan script )
>> hasil = exec(‘host -t cname wordpress.shunam.co.cc’)
wordpress.shunam.co.cc is an alias for shunam.wordpress.com.
hendrik@hendrik-laptop:/wordpress$
%x atau `
>> hasil = %x(host -t cname wordpress.shunam.co.cc)
=> “wordpress.shunam.co.cc is an alias for shunam.wordpress.com.\n”
>> hasil
=> “wordpress.shunam.co.cc is an alias for shunam.wordpress.com.\n”
>> hasil = `host -t cname wordpress.shunam.co.cc`
=> “wordpress.shunam.co.cc is an alias for shunam.wordpress.com.\n”
>> hasil
=> “wordpress.shunam.co.cc is an alias for shunam.wordpress.com.\n”

Terserah anda lebih memilih menggunakan yang mana. Tapi bila anda ingin mengambil nilai return dari command linux, silahkan anda gunakan %x atau cara mudahnya gunakan symbol `.

Selamat mencoba :D

Permalink 1 Comment

Check CNAME with Ruby On Rails

26 May 2010 at 11:25 (Ruby On Rails) (, )

Bila anda ingin mengecek apakah CNAME yang diset oleh user telah menunjuk ke server kita atau belum, anda bisa menggunakan script dibawah ini.

def validate
#domain_name berisi url yang diset oleh user
unless domain_name.blank?
reg = /server.com/
checking = `host -t cname #{domain_name}`
unless reg.match(checking)
self.errors.add(:domain_name, “is not valid”)
end
end
end

Tolong perhatikan script yang saya warnai merah ! itu bukan kutip 1, silahkan lihat ke http://shunam.wordpress.com/2010/05/26/ror-dan-module-kernel/

Selamat mencoba :D

Permalink 1 Comment

ROR and Chargify

26 May 2010 at 11:02 (Ruby On Rails) (, )

Kali ini saya akan membahas untuk menggunakan chargify. Apa itu chargify ? silahkan lihat langsung ke “http://chargify.com/”. Agar kita bisa menggunakannya di ROR, anda harus menginstall dulu gem “chargify_api_ares”. Kalau sudah anda setting API-nya di environment. Contoh dibawah ini bila anda ingin menuliskannya di config/environment.rb :

require ‘chargify_api_ares’
Chargify.configure do |c|
c.subdomain = (RAILS_ENV == ‘production’ ? ‘test.chargify.com’ : ‘test-dev.chargify.com’)
c.api_key   = #silahkan anda pakai API key anda
end

Sesudah itu, bila anda mau mencobanya, anda bisa mengetikkan di script/console, “Chargify::Product.find(:all)”. Bila berhasil, anda akan mendapatkan array yang berisi product-product dari client anda.

Bagaimana cara membuat customer dan membuat subscriptionnya ? Mudah, anda buat saja subscription baru dengan data yang lengkap, maka chargify akan menyimpan customer baru anda dan subcriptionnya. Sangat mudah kan ? Silahkan lihat di bawah ini untuk scriptnya :

chargify = Chargify::Subscription.create(

:product_handle => ‘nama product client anda’,

:customer_attributes => {

:first_name   => first_name,

:last_name    => last_name,

:email        => email,

:o rganization => organization # Sory menjadi smiley, anda bisa menebak itu huruf apa kan.

},

:credit_card_attributes => {

:full_number => card_number,

:expiration_month => card_expires_on_month,

:expiration_year => card_expires_on_year

}

)

unless chargify.errors["base"].blank? # ini untuk pengecekan, apakah ada error yang direturn oleh chargify, misalnya seperti no credit card yang tidak valid atau kartu kreditnya sudah expired.

Misalnya client anda sudah membuatkan 2 product yaitu reguler dan VIP, kemudian client anda ingin agar user bisa berpindah-pindah product. Anda bisa mengubahnya dengan mudah sekali. Silahkan lihat script di bawah :

s = Chargify::Subscription.find(subscription_id)

s.product_handle = #nama product barunya

s.save

Selamat mencoba :D

Permalink Leave a Comment

RCOV ubuntu 10.4

22 May 2010 at 13:50 (Tak Berkategori) (, , , )

Umumnya, bila anda telah menginstall gem rcov, anda bisa langsung menggunakan fungsi rcov di console. Saya menggunakan ubuntu 10.04 64 bit, fungsi rcov tidak dikenali. Padahal di gem list sudah ada gem rcov. Saya cari tahu mengapa fungsi atau command rcov tidak dikenali. Setelah lama mencari jalan keluar di google, tidak ada yang memberikan jawaban yang pasti. Jujur saya sempat kebingungan…, tapi ketika saya selidiki lagi errornya dengan menggunakan “-t”, saya disuruh menginstall rcov melalui apt-get. Saya coba saja “sudo apt-get install rcov”, dan ternyata langsung jalan. Saya juga coba delete gem rcovnya, dan ternyata masih jalan juga. Jadi saya delete aja gemnya dan menggunakan rcov dari repositori ubuntu :D

Selamat mencoba :D

UPDATE : Lihat di comment ( ada cara alternatif ). Thanks untuk yang udah ngebantu :D

Permalink 2 Comments

Sharing sessions between subdomain

15 April 2010 at 11:42 (Ruby On Rails) (, , )

Bila anda sedang menggunakan subdomain-fu dan anda ingin mengsharingkan session di antara subdomain untuk development ( artinya anda menggunakan localhost:3000 ), ada caranya.

Ubah nama domain anda jadi “local.host”. Mengapa harus dirubah ? Begini, browser tidak diijinkan sharing cookies hanya dengan “.com”, browser hanya mengijinkan sharing cookies, bila anda menggunakan nama domain yang lengkap, seperti “myweb.com”. Sama halnya dengan “localhost” dan “local.host”.

Terkadang “localhost” pun bisa berhasil, tapi terkena error AuthenticityToken, dan anda harus edit lagi ApplicationController-nya ( bad idea ).

Setelah anda rubah “localhost”, menjadi “local.host”, baru anda tambahkan line ini di ‘environments/development.rb’ :

config.action_controller.session = { :domain => '.local.host' }

Silahkan anda mencobanya dengan membuat login di “local.host:3000/login”, dan setelah selesai login, user di redirect ke “mydomain.local.host:3000/login”. Seharusnya tidak terjadi error sama sekali. kalau masih terjadi error, coba cek lagi apakah subdomainnya sudah di tambahkan ke “/etc/hosts” ?

Selamat Mencoba :D

Permalink Leave a Comment

rake extract_fixtures

10 April 2010 at 14:36 (Ruby On Rails) (, )

Jika anda ingin meng-dump data dari mysql ke fixture. Biasanya anda menggunakan rake db:fixtures:dump. Saya pun biasa menggunakan itu. Kemudian saya mengganti OS saya dengan ubuntu 9.10, dan saya install ruby on rails dari awal sampai akhir. Kemudian ketika saya ingin meng-dump data dari mysql ke fixture, saya gunakan rake db:fixtures:dump. Ternyata muncul error “Don’t know how to build task ‘db:fixtures:dump’”. Waduh…. kenapa bisa error ya, saya cek rake -T, ternyata memang rake db:fixtures:dump sudah tidak ada :( Bisa saja saya tulis lagi dari awal fixturesnya, tapi karena bisa memakan waktu lama. Akhirnya lebih baik saya cari mengapa tidak ada. Alhasil, saya pun baru tahu kalau rake db:fixtures:dump sudah tidak ada, dan diganti dengan rake db:extract_fixtures. Saya lihat di rake -T, ternyata rake db:extract_fixtures pun tidak ada :( Tapi saya menemukan sebuah script rake yang bagus :D Mirip dengan rake db:extract_fixtures. Tahap-tahapnya ( sudah dengan contoh) :

  • Anda buat sebuah file ‘extract_fixtures.rake’ di folder “/lib/tasks/’
  • Kemudian anda masukkan script ini :
desc ‘Create YAML test fixtures from data in an existing database.
Defaults to development database. Set RAILS_ENV to override. Use args
table and limit to dump one table and limit number of records’
task :extract_fixtures, :table, :limit, :needs => :environment do |t, args|
args.with_defaults(:table => nil, :limit => nil)
limit = args.limit.nil? ? “” : “LIMIT #{args.limit}”
sql = “SELECT * FROM %s #{limit}”
skip_tables = ["schema_info" ]
if args.table.nil?
tables = ActiveRecord::Base.connection.tables – skip_tables
else
tables = [ "#{args.table}"]
end
ActiveRecord::Base.establish_connection
tables.each do |table_name|
i = “000″
File.open(“#{RAILS_ROOT}/test/fixtures/#{table_name}.yml” , ‘w’ ) do |file|
data = ActiveRecord::Base.connection.select_all(sql % table_name)
file.write data.inject({}) { |hash, record|
hash["#{table_name}_#{i.succ!}" ] = record
hash
}.to_yaml
end
end
end

desc ‘Create YAML test fixtures from data in an existing database.Defaults to development database. Set RAILS_ENV to override. Use argstable and limit to dump one table and limit number of records’task :extract_fixtures, :table, :limit, :needs => :environment do |t, args|  args.with_defaults(:table => nil, :limit => nil)  limit = args.limit.nil? ? “” : “LIMIT #{args.limit}”  sql = “SELECT * FROM %s #{limit}”  skip_tables = ["schema_info" ]  if args.table.nil?     tables = ActiveRecord::Base.connection.tables – skip_tables  else    tables = [ "#{args.table}"]  end
ActiveRecord::Base.establish_connection  tables.each do |table_name|    i = “000″    File.open(“#{RAILS_ROOT}/test/fixtures/#{table_name}.yml” , ‘w’ ) do |file|      data = ActiveRecord::Base.connection.select_all(sql % table_name)      file.write data.inject({}) { |hash, record|        hash["#{table_name}_#{i.succ!}" ] = record        hash      }.to_yaml    end  endend

Untuk menggunakannya silahkan anda ketik rake extract_fixtures[nama_table,limit], contoh : rake extract_fixtures[users,1].

Semoga berguna dan selamat mencoba :D

Permalink Leave a Comment

Testing AJAX dengan Watir

26 March 2010 at 10:07 (Tak Berkategori)

Ada banyak gem yang bisa digunakan untuk mengetest Ajax, salah satunya adalah WATIR ( Web Application Testing In Ruby ). Contoh dibawah ini sudah saya gabungkan dengan Cucumber.

  • Anda install dulu gem watir ( gem install watir ), ketika anda menginstall watir. anda pun akan secara otomatis menginstall firewatir ( untuk mozilla ), chromewatir ( untuk google chrome ), dan safariwatir ( untuk safari ), dan flashwatir ( untuk component flash )
  • Kemudian jangan lupa anda “require ‘watir’” di config/environment/cucumber.rb
  • Kemudian anda masukkan di salah satu step untuk mengetest AJAX
When /^(?:|I )press “([^\"]*)”$/ do |button|
browser = Watir::Browser.new
browser.goto(“http://localhost:3000/my_site_with_ajax”
browser.checkbox(:name, “show_form”).set #ini adalah cek box untuk menampilkan form secara ajax
browser.text_field(:name, “username”).set “my_name”
browser.form(:action, “submit”).submit
end

Selesai dan selamat mencoba ya :D

Permalink Leave a Comment

Generator di dalam gem buatan sendiri

25 March 2010 at 16:06 (Tak Berkategori)

Topik ini adalah lanjutan dari topik kemarin dalam membuat ruby gem sendiri. Kalau belum lihat silahkan lihat di http://shunam.wordpress.com/2010/03/01/buat-ruby-gem-sendiri/.

Baik langkah pertama yang kita lakukan adalah :

  • gem install rubigen ( install dulu rubigen )
  • newgem coba ( buat gem dulu )
  • cd coba ( ganti direktori ke folder gem coba )
  • ruby script/generate component_generator [nama] [scope] ( nama adalah nama generatornya, scope adalah scope dari generatornya. untuk scope ada 2 pilihan, yaitu rubygems dan rails. Rubygems adalah generator yang hanya bisa diakses waktu mengdevelope rubygem, kalau rails adalah generator yang hanya bisa diakses untuk aplikasi rails saja, contoh ruby script/generate component_generator generatorku rails )
  • cd rails_generator ( disini anda akan lihat folder dengan nama generator anda, contoh generatorku)
  • cd generatorku ( tergantung dengan nama yang kalian kasih )
  • Di dalam folder ini, akan terdiri dari file USAGE, file generatorku_generator, dan folder templates. di dalam folder templates inilah dimana file-file generator kalian berada.
  • buat sebuah file misalnya “fileku.txt” di folder templates
  • kemudian edit file generatorku_generator
def manifest
record do |m|
m. file     ’copy_dari_fileku.txt’, ‘fileku.txt”
end
end
  • jangan lupa masukkan fileku.txt ke manifest atau biar mudah lakukan rake manifest
  • jangan lupa juga edit rakefile ( baca cara buat ruby gem sendiri )

Thanks, semoga sharingnya bermanfaat :D

Permalink Leave a Comment

Cucumber Error Couldn’t find ‘cucumber’ generator

25 March 2010 at 13:41 (Ruby On Rails) (, , , , )

Cucumber digunakan untuk BDD dalam ruby on rails. Dari tutorial yang saya baca cucumber hanya memerlukan gem rspec, rspec-rails, cucumber, dan webrat. Setelah saya install dan ingin menggunakannya dengan “ruby script/generate cucumber”, terjadi error “Couldn’t find ‘cucumber’ generator”.

Waduh… kenapa bisa error, padahal saya menggunakan tutorial yang biasa saya pakai. Saya pikir, mungkin gem nya ada yang bentrok atau bagaimana, saya coba install ulang ruby dan gem nya. Ternyata masih mendapat error yang sama. Saya pun berusaha mencari di mr google. Eh ternyata cucumber yang baru ( disaya versi 0.6.3 ), memisahkan antara generator dengan cucumbernya. Jadi selain gem-gem yang pertama saya sebutkan, ada tambahan gem baru yaitu cucumber-rails.

Jadi kalau anda mendapat error ini, cobalah install dulu gem cucumber-rails. Semoga membantu :D

Tambahan sedikit : sepertinya untuk cucumber versi 0.6.3 untuk masalah huruf ‘a’ tidak muncul di windows, sepertinya sudah tidak ada.

Permalink Leave a Comment

Buat ruby gem sendiri

1 March 2010 at 14:13 (Ruby On Rails) (, )

Apakah anda memiliki keinginan atau anda diberi pekerjaan untuk membuat gem sendiri ? Anda bisa menggunakan gem newgem. Newgem adalah gem untuk membuat gem sendiri. Cara pemakaiannya mudah, langkah-langkahnya yaitu :

  1. install dulu newgem
  2. sesudah anda install anda lakukan “newgem [nama_gem yang anda inginkan]“, misal “newgem myapp”. Nanti newgem akan menggenerate beberapa file untuk anda. Contohnya : Ada beberapa parameter yang bisa digunakan, contohnya : -b untuk membuatkan “cli executeable” atau -t untuk membuat test unit, untuk lebih lengkap anda bisa lihat menggunakan parameter -h.
  3. Kemudian anda buat file ruby untuk gem nya berada di dalam folder “lib/myapp”
  4. Untuk merubah version, minor bug,  atau major bug, anda bisa edit di file “/lib/myapp.rb”
  5. Bila anda tidak ingin menggunakan semua file anda bisa ubah manifestnya yang berada di Manifest.txt. Saya berikan contoh misalnya anda menambahkan sebuah file “contoh.rb” di dalam folder “lib/myapp”. Anda tambahkan saja langsung di manifestnya “lib/myapp/contoh.rb”. Atau misalnya anda sudah membuat 100 file yang baru dan anda malas untuk memasukkan satu per satu, anda bisa gunakan rake check_manifest. Nanti akan muncul seperti ini : Coba anda perhatikan tulisan yang saya putihkan atau ada lambang “+” ( plus ). Anda copy itu semua, dan anda ganti semua isi manifest.txt, dengan yang tadi anda copy. Jangan lupa hapus character “+”-nya.
  6. Jangan lupa tulis perubahan apa saja di history.txt. untuk memudahkan developer lain membantu anda membuat gem anda.
  7. Bila gemnya sudah siap, anda bisa lakukan rake gem, untuk membuat gem-nya. Gem yang di hasilkan akan berada di dalam folder /pkg

Gemnya tinggal anda install, selamat mencoba :D

Permalink 1 Comment

Next page »

Follow

Get every new post delivered to your Inbox.