menu

Engine UBUNTU - Crontab backup database


Crontab merupakan sebuah sistem otomatis pada ubuntu yang dapat kita manfaatkan untuk menjalankan script terminal secara otomatis dan berkala.

Pada perusahaan-perusahaan start-up, data-data perusahaan seperti data user, data client dan lain-lain selalu dibackup untuk diolah dan untuk menjaga jika suatu ketika developer melakukan kesalahan.

Sehingga sistem crontab pada ubuntu ini sangatlah berguna untuk permasalahan tersebut.

Sistem crontab dapat mengatur suatu engine untuk dijalankan secara berkala misalkan setiap hari jam 6 pagi database perusahaan akan dibackup secara otomatis sehingga developer tidak perlu lagi membackup database secara manual.

Tutorial kali ini akan mengajarkan cara membuat engine crontab tersebut.
Sangat disarankan telah mengikuti tutorial pada website ini tentang PHP sampai pada CRUD delete non framework karena kita akan membackup database dari project tersebut.

Pertama, buat folder pada path var/www/html bernama crontab seperti ini


Kemudian buat file bernama backup.sh pada folder crontab tersebut, dengan cara sudo vim backup.sh kemudian isi kan code berikut pada file tersebut,
now="$(date +'%d_%m_%Y_%H_%M_%S')"
filename="db_backup_$now".gz
backupfolder="/var/www/html/crontab"
fullpathbackupfile="$backupfolder/$filename"
logfile="$backupfolder/"backup_log_"$(date +'%Y_%m')".txt
echo "backup database dimulai pada $(date +'%d-%m-%Y %H:%M:%S')" >> "$logfile"
mysqldump --user=root --password=(*diisi password mysql anda) --default-character-set=utf8 webcoboy | gzip > "$fullpathbackupfile"
echo "backup database selesai pada $(date +'%d-%m-%Y %H:%M:%S')" >> "$logfile"
chown myuser "$fullpathbackupfile"
chown myuser "$logfile"
echo "proses selesai pada $(date +'%d-%m-%Y %H:%M:%S')" >> "$logfile"
echo "*****************" >> "$logfile"
exit 0

Setelah itu pastikan bahwa file backup.sh yang baru dibuat tadi dapat dieksekusi dengan cara "sudo chmod 755 backup.sh" untuk lebih jelasnya lihat disini.

Selanjutnya ketikan pada terminal crontab -e untuk mengedit list crontab
dan masukan code berikut seperti ini.
# Edit this file to introduce tasks to be run by cron.
# 
# Each task to run has to be defined through a single line
# indicating with different fields when the task will be run
# and what command to run for the task
# 
# To define the time you can provide concrete values for
# minute (m), hour (h), day of month (dom), month (mon),
# and day of week (dow) or use '*' in these fields (for 'any').# 
# Notice that tasks will be started based on the cron's system
# daemon's notion of time and timezones.
# 
# Output of the crontab jobs (including errors) is sent through
# email to the user the crontab file belongs to (unless redirected).
# 
# For example, you can run a backup of all your user accounts
# at 5 a.m every week with:
# 0 5 * * 1 tar -zcf /var/backups/home.tgz /home/
# 
# For more information see the manual pages of crontab(5) and cron(8)
# 
# m h  dom mon dow   command
* * * * * /var/www/html/crontab/backup.sh

See crontab akan menjalankan file backup.sh setiap satu menit untuk membackup database project webcoboy. untuk mengeceknya silahkan buka folder crontab pada path /var/www/html/crontab makan anda akan melihat file backup dan file txt.

Untuk menghentikan hapus atau comment saja code berikut pada crontab, dengan mengetikan crontab -e seperti ini.
# Edit this file to introduce tasks to be run by cron.
# 
# Each task to run has to be defined through a single line
# indicating with different fields when the task will be run
# and what command to run for the task
# 
# To define the time you can provide concrete values for
# minute (m), hour (h), day of month (dom), month (mon),
# and day of week (dow) or use '*' in these fields (for 'any').# 
# Notice that tasks will be started based on the cron's system
# daemon's notion of time and timezones.
# 
# Output of the crontab jobs (including errors) is sent through
# email to the user the crontab file belongs to (unless redirected).
# 
# For example, you can run a backup of all your user accounts
# at 5 a.m every week with:
# 0 5 * * 1 tar -zcf /var/backups/home.tgz /home/
# 
# For more information see the manual pages of crontab(5) and cron(8)
# 
# m h  dom mon dow   command
#* * * * * /var/www/html/crontab/backup.sh

Untuk membaca file .gz hasil backup dengan cara:

$ sudo zcat filename.gz 

Jika kurang mengerti dengan sintax ubuntu silahkan buka disini.
Untuk penjelasan tentang Crontab sendiri bisa lihat disini.

===DONE!===

What is - Crontab


Crontab merupakan sebuah sistem pada Linux yang bekerja dibalik layar yang dapat menjalankan sebuah perintah coding secara otomatis dan berkala.

Crontab ini sangat berguna untuk memudahkan developer dalam melakukan suatu pekerjaan yang dilakukan secara berulang-ulang.

Dengan Crontab seorang developer tidak perlu lagi menjalankan sebuah program yang dibuat untuk melakukan suatu hal secara manual, karena dengan Crontab program tersebut dapat dijalankan secara otomatis dan berkala.

Oke berikut sintax-sintax dari Crontab.
crontab -e      //Edit file crontab, atau buat baru jika belum pernah ada.
crontab -l      //Menampilkan isi dari file crontab.
crontab -r      //Menghapus file crontab.

//jika crontab belum terinstall diubuntu bisa menggunakan code
sudo apt-get install cron

Aturan penjadwalan dalam Crontab.
*  *  *  *  * path/file/yang/akan/dieksekusi.sh
.  .  .  .  .
.  .  .  .  ----> hari dari minggu (0–6) dimana 0 = minggu
.  .  .  .
.  .  .  -------> bulan (1–12)
.  .  .
.  .  ----------> hari dari bulan / tanggal (1–31)
.  .
.  -------------> jam (0-23)
.
----------------> menit (0-59)

//eksekusi dalam menit
* * * * * path/file/yang/akan/dieksekusi.sh (ini tiap menit)
*/5 * * * * path/file/yang/akan/dieksekusi.sh (ini tiap 5 menit)
2,3,7,57 * * * * path/file/yang/akan/dieksekusi.sh (ini tiap menit ke 2,3,7,57)

//eksekusi dalam jam
0 6 * * * path/file/yang/akan/dieksekusi.sh (ini tiap jam 6 pagi)
0 6 * * 1 path/file/yang/akan/dieksekusi.sh (ini tiap jam 6 pagi hari senin)
0 6 * * 1-5 path/file/yang/akan/dieksekusi.sh (ini tiap jam 6 pagi hari senin sampai jum'at)

//eksekusi dengan code
@reboot     Mengeksekusi satu kali setiap menghidupkan sistem ubuntu
@yearly     Mengeksekusi satu kali setiap tahun  ==  "0 0 1 1 * (ini tiap tanggal 1 bulan 1)"
@annually   Sama seperti @yearly
@monthly    Mengeksekusi satu kali setiap bulan  ==  "0 0 1 * * (ini tiap tanggal 1)"
@weekly     Mengeksekusi satu kali setiap minggu   ==  "0 0 * * 0 (ini tiap hari minggu)"
@daily      Mengeksekusi satu kali setiap hari   ==   "0 0 * * * (ini tiap jam 12 malam)"
@midnight   Sama seperti @daily
@hourly     Mengeksekusi satu kali setiap jam  ==  "0 * * * * (ini tiap menit pertama)"

//menyimpan log crontab
@daily path/file/yang/akan/dieksekusi.sh 2>&1 >> /home/sigit/log/crontab_schedule.log

//mengirim log ke email
@daily path/file/yang/akan/dieksekusi.sh 2>&1 | mail -s "Cronjob Log codedoct@gmail.com

//menjalankan file php pada crontab
@daily /usr/bin/php /path/file/yang/akan/dieksekusi.php

===DONE!===

Laravel - Grouping Route 1


Melanjutkan tutorial yang kemarin, pada tutorial kali ini saya akan memberikan tutorial tentang cara membuat group route pada Laravel.

Membuat group merupakan suatu trik untuk mengelompokan route menjadi beberapa kelompok sehingga memudahkan seorang developer untuk mentrack controller suatu project.

Selain memudahkan developer grouping route ini juga membuat codingan menjadi lebih rapi dan elegan.

Oke langsung saja kita mulai tutorialnya,.,.,

Pertama edit routes.php pada path protected/app/routes.php menjadi seperti ini
<?php

/*
|--------------------------------------------------------------------------
| Application Routes
|--------------------------------------------------------------------------
|
| Here is where you can register all of the routes for an application.
| It's a breeze. Simply tell Laravel the URIs it should respond to
| and give it the Closure to execute when that URI is requested.
|
*/

Route::get('/', 'HomeController@showWelcome');

//pahamilah group route dibawah
Route::group(array('prefix' => 'crud'), function(){
 Route::get('users', 'Controller\Crud\ReadController@readUsers');

 Route::get('create', 'Controller\Crud\CreateController@createUser');
 Route::post('create', 'Controller\Crud\CreateController@createpostUser');

 Route::get('update/{id}', 'Controller\Crud\UpdateController@updateUser');
 Route::post('update/{id}', 'Controller\Crud\UpdateController@updatepostUser');

 Route::get('delete/{id}', 'Controller\Crud\DeleteController@deleteUser');
});

Selanjutnya edit readUser.blade.php, createUser.blade.php, updateUser.blade.php  pada path protected/app/view/web/, masing-masing menjadi seperti ini.

readUser.blade.php
.
.
.
          <td>
           <a href="{{ URL::to('crud/update/'.$users->id) }}">Edit<br>
           <a href="{{ URL::to('crud/delete/'.$users->id) }}">Delete
          </td>
       </tr>
     @endforeach
   </table>
   <br>
   <button onclick="location.href='{{ URL::to('crud/create') }}';">Create</button>
 </div>
@stop

createUser.blade.php
.
.
.
   <tr>
    <td colspan="3">
     <br>
     <input type="submit" class="btn" value="Create">
    </td>
   </tr>
  </table>
  </form>
 </div>
@stop

updateUser.blade.php
@extends('layouts/web/master')
@section('content')
 <?php $title = "Update User" ?>
 <div class="isi">
  <form method="post" action="">
  <table>
   <tr>
    <td>Name</td>
    <td nowrap>:</td>
    <td><input type="text" name="name" value="{{ $data_user['name'] }}"><span style="color:red"><?php echo $errors->first('name') ?></td>
   </tr>
   <tr>
    <td>Username</td>
    <td nowrap>:</td>
    <td><input type="text" name="username" value="{{ $data_user['username'] }}"><span style="color:red"><?php echo $errors->first('username') ?></td>
   </tr>
   <tr>
    <td>Email</td>
    <td nowrap>:</td>
    <td><input type="text" name="email" value="{{ $data_user['email'] }}"><span style="color:red"><?php echo $errors->first('email') ?></span></td>
   </tr>
   <tr>
    <td colspan="3">
     <br>
     <input type="submit" class="btn" value="Save">
    </td>
   </tr>
  </table>
  </form>
 </div>
@stop

Kemudian edit header.blade.php pada path protected/app/view/layouts/web menjadi seperti ini.
<div class="header">
 <div class="banner">
  <div class="welcome">Welcome</div>
  {{-- code dibawah ini menggunakan constant variabel --}}
  <div class="gambar"><a href="#"><img src="{{ IMAGE_HEADER }}" style="width:"100px" height="129px";"></a></div>
 </div>
 <hr>
 <div class="menu">
  <div class="kiri">
   <li>
    <div class="dropdown">
      <button class="button">Menu(css)</button>
      <div class="dropdown-content">
        <a href="{{ URL::to('crud/users')}}">User</a>
        <a href="#">Link 2</a>
        <a href="#">Link 3</a>
      </div>
    </div>
   </li>
   <li>
     <div class="dropdown-script">
      <button onclick="myFunction()" class="dropbtn">Menu(css)</button>
      <div id="myDropdown" class="dropdown-content-script">
        <a href="{{ URL::to('crud/users')}}">User</a>
        <a href="#">Link 2</a>
        <a href="#">Link 3</a>
      </div>
     </div>
   </li>
  </div>
  <div class="kanan">
   <li onclick="location.href='{{ URL::to('/') }}';">Login</li>
   <li onclick="location.href='{{ URL::to('/') }}';">Cari</li>
  </div>
 </div>
</div>

Dan yang terakhir edit controller CreateController.php, UpdateController.php, dan DeleteController.php masing-masing seperti ini.

CreateController.php
.
.
.
     if ($validator->passes()) {
         $user           = new User;
         $user->name     = Input::get('name');
         $user->username = Input::get('username');
         $user->email    = Input::get('email');
         $user->password = Hash::make(Input::get('password'));
         $user->save();

         return Redirect::to('crud/users');
     }
     else {
      return Redirect::to('crud/create')
       ->withErrors($validator)
       ->withInput();
     }
 }
}

UpdateController.php
.
.
.
     if ($validator->passes()) {
         $user           = User::find($id);
         $user->name     = Input::get('name');
         $user->username = Input::get('username');
         $user->email    = Input::get('email');
         $user->save();

         return Redirect::to('crud/users');
     }
     else {
      return Redirect::to('crud/update/'.$id)
       ->withErrors($validator)
       ->withInput();
     }
 }
}

DeleteController.php
<?php namespace Controller\Crud;

use Model\User;
use \Redirect;

class DeleteController extends \BaseController 
{
 public function deleteUser($id)
 {
  $user = User::where('id', $id)->first();
  $user->delete();
  return Redirect::to('crud/users');
 }
}

Silahkan pahamilah sendiri apa saja yang telah kita edit dari tutorial sebelumnya,..

===DONE!===

Laravel - Composer classmap


Pada artikel kali ini kembali saya akan memberikan tutorial yang akan membuat proect laravel anda semakin elegan.,.,.

Pada sebuah project website dengan framework Laravel kita perlu membuat pengelompokan pada setiap class yang kita buat agar codingan lebih terlihat rapi.

Tutorial kali ini akan menjelaskan cara membuat foldering controller pada Laravel agar codingan terlihat lebih rapi,.,

Untuk bisa melakukan tutorial ini diharuskan anda sudah menerapkan tutorial hingga tahap ini.

Oke langsung saja kita mulai tutorialnya,

Pertama, buat folder bernama "crud" pada controller kemudian masukkan CreateController, DeleteController, ReadController, dan UpdateController kedalam folder tersebut seperti ini.


Jika kita membuka website anda dan mengklik submenu user seperti ini


Maka kita akan mendapatkan error seperti ini


Hal ini disebabkan karena kita belum membuat classmap pada route sehingga controller tidak dapat dikenali.

Selanjutnya buat classmap pada route dengan mengubah code routes.php pada path protected/app/routes.php menjadi seperti ini.
<?php

/*
|--------------------------------------------------------------------------
| Application Routes
|--------------------------------------------------------------------------
|
| Here is where you can register all of the routes for an application.
| It's a breeze. Simply tell Laravel the URIs it should respond to
| and give it the Closure to execute when that URI is requested.
|
*/

Route::get('/', 'HomeController@showWelcome');

Route::get('users', 'Controller\Crud\ReadController@readUsers');

Route::get('create', 'Controller\Crud\CreateController@createUser');
Route::post('create', 'Controller\Crud\CreateController@createpostUser');

Route::get('update/{id}', 'Controller\Crud\UpdateController@updateUser');
Route::post('update/{id}', 'Controller\Crud\UpdateController@updatepostUser');

Route::get('delete/{id}', 'Controller\Crud\DeleteController@deleteUser');

kemudian tambahkan code "namespace Controller\Crud;" pada semua controller(CreateController, DeleteController, ReadController, dan UpdateController) yang ada pada folder crud yang baru saja kita pindahkan tadi menjadi seperti ini.
<?php namespace Controller\Crud;

class ReadController extends \BaseController 
{
 public function readUsers()
 {
  $users = User::all();
  return View::make('web.readUser')->with('data_user', $users);
 }

}


Terakhir jalankan dump autoload pada terminal seperti ini.


Jika terjadi error seperti ini.


Berarti project yang kita buat belum memiliki file composer.phar silahkan download disini, jika sudah download letakkan pada path protected pada project laravel kemudian jalankan dump-autoload lagi, hingga sukses denngan tampilan seperti ini.


===DONE!===

WHY?

1. Untuk error


Ini dikarenakan file model belum di beri class juga sehingga nama model dianggap sama dengan nama file migration cara mengatasinya dengan memberi code "&lt;?php namespace Model;" pada model User.php pada path protected/app/model/User.php seperti ini



2. Untuk error


Ini hanya warning saja bukan error jika ingin menghilangkannya tinggal lakukan saja apa yang diperintahkan yaitu tetap pada path protected kemudian ketik pada terminal "php composer.phar self-update"

3. Untuk error

Tambahkan saja code "use Model\User;" 


Tambahkan saja code "use \View;" 

Pada controller ReadController.php dan misalkan pada controller lain juga muncul error tersebut maka tambahkan juga code tersebut pada controller yang error.
Ingat! setiap controller mungkin membutuhkan Model dan  Library yang berbeda jadi sesuaikan dengan kebutuhan pada saat menggunakan code "use ...........".
Misal jika dibutuhkan Validator maka tinggal tambahkan "use \Validator;"
Sehingga code controller akan menjadi seperti ini.
<?php namespace Controller\Crud;

use Model\User;
use \View;

class ReadController extends \BaseController 
{
 public function readUsers()
 {
  $users = User::all();
  return View::make('web.readUser')->with('data_user', $users);
 }

}


4. Untuk error


Tambahkan saja code "use \Eloquent;" pada model User.php. Sama seperti controller Model juga memiliki kebutuhan Library yang berbeda-beda jadi sesuaikan setiap modelnya, pada contoh diatas model User.php error karena class Model\Eloquent tidak ditemukan jadi kita tambahkan saja code "use \Eloquent;".
Sehingga code model User.php akan menjadi seperti ini.
<?php namespace Model;

use Illuminate\Auth\UserTrait;
use Illuminate\Auth\UserInterface;
use Illuminate\Auth\Reminders\RemindableTrait;
use Illuminate\Auth\Reminders\RemindableInterface;
use \Eloquent;

class User extends Eloquent implements UserInterface, RemindableInterface {

 use UserTrait, RemindableTrait;

 /**
  * The database table used by the model.
  *
  * @var string
  */
 protected $table = 'users';

 /**
  * The attributes excluded from the model's JSON form.
  *
  * @var array
  */
 protected $hidden = array('password', 'remember_token');

}

Selebihnya silahkan pahamilah sendiri,,,
Jika ada yang kurang dimengerti atau ada error lain silahkan email(contact us) atau comment juga boleh.

Laravel - Membuat file Constant


Memiliki file constant dalam sebuah project besar laravel adalah suatu keharusan karena file constant dapat membantu mempermudah pengembangan project tersebut.

File constant meruupakan sebuah kumpulan variabel yang mewakili atau menggantikan suatu string secara global. Sehingga kita hanya perlu menuliskan variabel singkat untuk menggantikan string yang panjang.

File constant ini bersifat global sehingga kita tidak perlu mendeklarasikannya pada setiap halaman.

Jangan lupa ikuti tutorial pada website ini secara berurutan, dan untuk sampai tahap ini pastikan anda sudah menyelesaikan tutorial sampai pada tutorial ini.

Oke langsung saja kita praktekan untuk lebih jelasnya, Here we go!

Pertama buat file baru constants.php pada path protected/app seperti ini


Isi dengan code berikut
<?php
 // gambar
 define('IMAGE_HEADER', 'https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgWOzEVZ-vSf8RORS5_ZF7e0ltWpkD7gFpz-rqKoBgvvfJkgG9iXS5RxO3iU-MF2TvMqhkj7tIalKW48dq7bJv1Rjk-CKPsKLG6lZGuqVAd_IbNHzZYbWDuyvy2Rji4g1VTQsejHbKskbI/s80/mata.png');

Kemudian deklarasikan file constant tersebut dengan cara menambahakan code berikut pada file protected/app/start/global.php
.
.
.
.
.
.
require app_path().'/filters.php';

// file constant
require_once app_path().'/constants.php';

App::missing(function(Exception $exception)
{
    return Response::view('web.404-not-found', array(), 404);
});

Selanjutnya ganti url header pada path


Edit file header.blade.php menjadi seperti ini
<div class="header">
 <div class="banner">
  <div class="welcome">Welcome</div>
  {{-- code dibawah ini menggunakan constant variabel --}}
  <div class="gambar"><a href="#"><img src="{{ IMAGE_HEADER }}" style="width:"100px" height="129px";"></a></div>
 </div>
 <hr>
 <div class="menu">
  <div class="kiri">
   <li>
    <div class="dropdown">
      <button class="button">Menu(css)</button>
      <div class="dropdown-content">
        <a href="{{ URL::to('users')}}">User</a>
        <a href="#">Link 2</a>
        <a href="#">Link 3</a>
      </div>
    </div>
   </li>
   <li>
     <div class="dropdown-script">
      <button onclick="myFunction()" class="dropbtn">Menu(css)</button>
      <div id="myDropdown" class="dropdown-content-script">
        <a href="{{ URL::to('users')}}">User</a>
        <a href="#">Link 2</a>
        <a href="#">Link 3</a>
      </div>
     </div>
   </li>
  </div>
  <div class="kanan">
   <li onclick="location.href='{{ URL::to('/') }}';">Login</li>
   <li onclick="location.href='{{ URL::to('/') }}';">Cari</li>
  </div>
 </div>
</div>

Dapat dilihat pada code tersebut dari url yang panjang kita ganti dengan sebuah variabel IMAGE_HEADER yang sudah kita deklarasikan pada file constants.php selebihnya silahkan pahamilah sendiri..

Tampilannya tetap sama seperti sebelum url gambar diganti dengan file constant, tapi dari sisi code ini sangat elegan..


===DONE!===

Laravel - Membuat page not found


Hello,, lama beristirahat dengan Laravel karena sibuk dengan Rails saatnya kembali berkreasi dengan PHP on Laravel.

Oke melanjutkan tutorial sebelumnya, kali saya akan share sebuah teknik untuk menampilkan halaman page not found pada website dengan framework Laravel 4.2.

Pada Laravel jika kita memasukkan sebuah URL yang salah maka akan muncul halaman error seperti ini.


Untuk sebuah website profesional tentu saja halaman ini sangat tidak enak dilihat, karena user akan beranggapan bahwa website anda error atau bugs.

Karena itu sebagai seorang programmer teruslah belajar untuk membuat sebuah sistem sesederhana mungkin dari segi interface/tampilan tapi rumit dibagian code dan yang paling penting minim atau malah tidak ada bugs sama sekali hehe..

Oke langsung saja sedikit ilmu dari dari seorang programmer amatir, Here we go!..

Pertama pastinya anda sudah membuat sebuah project website dengan menggunakan Laravel jika belum? silahkan belajar dulu sampai anda menyelesaikan tahap ini.

Jika sudah, buka path app/start/global.php


Kemudian tambahkan code berikut pada baris paling bawah seperti ini
App::missing(function(Exception $exception)
{
    return Response::view('web.404-not-found', array(), 404);
});

Kemudian buat file baru dengan nama 404-not-found.php pada path protected/app/views/web seperti ini


Dan isi dengan code terserah anda, halaman inilah yang akan ditampilkan saat Page Not Found, misal isi dengan code berikut
Page not found :D

Sehingga tampilannya jika saya masukkan URL yang salah akan terlihat seperti ini


===DONE!===

Rails - Install Rails on Ubuntu


Oke melanjutkan artikel sebelumnya, kali ini kita akan menginstall Rails..

Rails merupakan sebuah framework pada Ruby yang akan memudahkan anda membuat sebuah website dengan menggunakan bahasa Ruby yang sangat elegan..

Kebanyakan orang yang menguasai Ruby on Rails adalah programmer yang sudah bisa dikatakan "PRO" dikarenakan kebanyakan  dari mereka yang jago Ruby pasti sebelumnya sudah pernah belajar PHP dan membandingkan kedua bahasa pemrogramman tersebut. Tapi tidak sedikit juga programmer yang langsung mempelajari Ruby tanpa mengerti PHP hehe..

Tentu saja hal itu sangat disayangkan  karena PHP dengan penggemar yang sangat banyak diseluruh dunia juga merupakan bahasa yang elegan dan penuh dengan "kebebasan" => "U Can Make Anything With PHP" haha..

Oke langsung saja kita install Railsnya, Here we go..

Jangan lupa install Ruby terlebih dahulu,

Dalam pengembangannya nanti Rails sangat bergantung pada JavaScript oleh sebab itu kita install terlebih dahulu NodeJS
curl -sL https://deb.nodesource.com/setup_4.x | sudo -E bash -
sudo apt-get install -y nodejs

Kemudian Install Rails
gem install rails -v 5.0.0.1

Pastikan kembali rbenv Ruby dapat eksekusi
rbenv rehash

Check installation
rails -v

Sehingga tampilannya akan terlihat seperti ini


===DONE!===