ขั้นตอนการติดตั้ง Ruby on Rails บน Ubuntu
วันนี้จะมานำเสนอ วิธีการติดตั้ง Ruby on Rails บนเครื่อง Ubuntu ครับ หลังจากใช้เวลาลองผิดลองถูก นับแรมปี ติดตั้งมาก็หลายรอบแล้ว ก็เลยตัดสินใจทำเป็นบทความซะเลย เผื่อจะมีผู้ที่ผ่านมา สนใจ หรือกำลังหาวิธีการติดตั้งอยู่ ก็ทำตามขั้นตอน ตามนี้ได้เลยครับ
Step 1 : Install Git
ขั้นแรก จงทำการติดตั้ง git ซะ (git คือ version control)
sudo apt-get install git-coreหลังจากนั้น ก็ทำการ เซ็ทอัพ git โดยเปลี่ยน “name” เป็นชื่อของผู้อ่าน และ “email” เป็นอีเมล์ผู้อ่านซะ อันนี้ถ้าลืมอีเมล์หรือชื่อตัวเอง ก็ช่วยไม่ได้นะ :>
git config --global user.name "name"git config --global user.email "email"ลองตรวจสอบ ด้วยคำสั่ง
git config --get user.nameผลลัพธ์จะต้องได้เป็นชื่อที่ผู้อ่านได้ทำการต้้งไว้ และลองตรวจสอบด้วยคำสั่งนี้ เพื่อแสดงผลลัพธ์ของอีเมล์ที่ตั้งไว้
git config --get user.emailผลลัพธ์จะได้จะเป็นอีเมล์ที่ได้ทำการตั้งค่าไว้ก่อนหน้านี้นะ มิเช่นนั้น แสดงว่าตั้งค่าผิด กลับไปทำดูใหม่นะ
Step 2 : Install RVM
ติดตั้ง RVM คือ Ruby Version Manager เป็นเครื่องมือสำหรับบริหารจัดการเวอร์ชันสำหรับ Ruby ซึ่งช่วยให้ผู้อ่านสามารถเปลี่ยนเวอชั่น Ruby หรือไปใช้ในโปรเจคอื่นๆทำได้ง่าย (อีกตัวที่ได้ความนิยมไม่แพ้กัน นั่นก็คือ rbenv แต่ว่าส่วนตัวยังไม่เคยใช้ ก็เลยไม่รู้จะบอกยังไง ฮ่ะ ฮ่า หากผู้อ่านท่านใด ต้องการจะลงด้วย rbenv ก็ข้ามขั้นตอนนี้ไปได้)
sudo apt-get install curlcurl -L get.rvm.io | bash -s stableเมื่อเจอข้อความประมาณนี้ แสดงว่ากำลังจะติดตั้ง RVM เสร็จสมบูรณ์แล้ว แต่ยัง.. ช้าก่อน อย่าเพิ่งชะล่าใจนัก
# In case of any issues read output of 'rvm requirements' and/or 'rvm notes'
Installation of RVM in /home/devahoy/.rvm/ is almost complete:
* To start using RVM you need to run `source /home/devahoy/.rvm/scripts/rvm`in all your open shell windows, in rare cases you need to reopen all shell windows.
# devahoy,## Thank you for using RVM!# I sincerely hope that RVM helps to make your life easier and# more enjoyable!!!## ~Wayneจะมีข้อความบอกไว้ ว่า การติดตั้ง เกือบจะ เสร็จแล้ว เห็นไหมละ ว่ายังไม่เสร็จนะ ดูให้ดีๆด้วย หากต้องการสั่งให้ RVM ทำงาน ให้ สั่ง run source/home/devahoy/.rvm/scripts/rvm
นั่นก็คือ path ที่อยู่ที่เครื่องของผู้อ่านนั่นเอง จัดการสั่งรันคำสั่ง เพื่อให้ RVM ทำงาน โดย path ที่อยู่แต่ละเครื่องก็จะแตกต่างกันไป
source /home/devahoy/.rvm/scripts/rvmทดสอบ
rvm -vผลลัพธ์ที่ได้ ต้องเป็นแบบนี้ (ณ เวลาที่เขียนบทความ คือ version 1.25.15) หากได้เวอร์ชั่นที่สูงกว่า ก็ไม่ต้องแปลกใจไป
rvm 1.25.15 (stable) by Wayne E. Seguin <wayneeseguin@gmail.com>,Michal Papis <mpapis@gmail.com> [https://rvm.io/]ทดสอบ ดู requirements ของ rvm (ขั้นตอนนี้ rvm จะทำการ check ว่า มันยังขาด library อะไรที่จำเป็นอีกบ้าง)
rvm requirementsผลลัพธ์จะได้หน้าตาประมาณนี้ ตัวโปรแกรม แล้วแต่เครื่องของผู้อ่าน หากบางเครื่องมีการติดตั้ง library/dependencies อื่นไปแล้ว ก็จะไม่จำเป็นต้องติดตั้งอีก
# For Ruby / Ruby HEAD (MRI, Rubinius, & REE), install the following: ruby: /usr/bin/apt-get install build-essential openssl libreadline6 libreadline6-devcurl git-core zlib1g zlib1g-dev libssl-dev libyaml-dev libsqlite3-dev sqlite3 libxml2-devlibxslt-dev autoconf libc6-dev ncurses-dev automake libtool bison subversion pkg-configแต่หากว่าไม่มีอะไรขาด ก็จะขึ้นประมาณนี้
Checking requirements for ubuntu.Requirements installation successful.Step 3 : Install Ruby
ขั้นตอนนี้ก็ติดตั้ง Ruby ผ่านทาง RVM หากต้องการรู้ว่า RVM สามารถติดตั้งอะไรได้บ้าง ใช้คำสั่ง
rvm list knownจะได้รายชื่อโปรแกรม และเวอร์ชั่นที่ผู้อ่านจะสามารถติดตั้งได้
# MRI Rubies[ruby-]1.8.6[-p420][ruby-]1.8.7[-p374][ruby-]1.9.1[-p431][ruby-]1.9.2[-p320][ruby-]1.9.3[-p484][ruby-]2.0.0-p195[ruby-]2.0.0[-p353][ruby-]2.1.0[ruby-]2.1.0-headruby-headติดตั้ง ruby (หากไม่กำหนดเลขเวอร์ชั่น ก็จะเป็นการติดตั้งเวอร์ชั่นล่าสุด)
rvm install rubyหากขึ้นข้อความแบบข้างล่างนี้ ให้กด Q จากนั้นนั่งรอการติดตั้ง ซักพักนึงประมาณ 5 นาที หรือว่าขึ้นอยู่กับความเร็วเนตก็ไม่แน่ใจนัก
Ruby (and needed base gems) for your selection will be installed shortly.Before it happens, please read and execute the instructions below.Please use a separate terminal to execute any additional commands.
Requirements for Linux "Ubuntu 13.10"
NOTE: 'ruby' represents Matz's Ruby Interpreter (MRI) (1.8.X, 1.9.X)This is the *original* / standard Ruby Language Interpreter'ree' represents Ruby Enterprise Edition'rbx' represents Rubinius
bash >= 4.1 requiredcurl is requiredgit is required (>= 1.7 for ruby-head)patch is required (for 1.8 rubies and some ruby-head's).
To install rbx and/or Ruby 1.9 head (MRI) (eg. 1.9.2-head),then you must install and use rvm 1.8.7 first.
Additional Dependencies:# For Ruby / Ruby HEAD (MRI, Rubinius, & REE), install the following:ruby: /usr/bin/apt-get install build-essential openssl libreadline6 libreadline6-dev curl git-core zlib1g zlib1g-dev libssl-dev libyaml-dev libsqlite3-dev sqlite3 libxml2-dev libxslt-dev autoconf libc6-dev ncurses-dev automake libtool bison subversion pkg-config
# For JRuby, install the following:jruby: /usr/bin/apt-get install curl g++ openjdk-6-jre-headlessjruby-head: /usr/bin/apt-get install ant openjdk-6-jdk
# For IronRuby, install the following:ironruby: /usr/bin/apt-get install curl mono-2.0-develเมื่อติดตั้งเสร็จ ก็เลือกใช้ เวอร์ชั่นของ Ruby ที่ต้องการ ผมเลือกใช้ ruby version 2.1.0
rvm use 2.1.0หากมีปัญหา ขึ้นดังข้างล่าง
RVM is not a function, selecting rubies with 'rvm use ...' will not work.
You need to change your terminal emulator preferences to allow login shell.Sometimes it is required to use `/bin/bash --login` as the command.Please visit https://rvm.io/integration/gnome-terminal/ for a example.ให้แก้ไขโดย เปิด Terminal (Ctrl + Alt + T) เลือก Edit -> **Profile Preferences ** จากนั้นคลิ๊กแท็ป Title and Command ในส่วน Command เลือก Run command as a login shell ปิดและเปิด Terminal ใหม่อีกครั้ง

ทดสอบคำสั่ง use อีกครั้ง
rvm use 2.1.0หากไม่มี error จะได้ผลลัพธ์ประมาณนี้
Using /home/devahoy/.rvm/gems/ruby-2.1.0ตอนนี้ติดตั้ง ruby เวอร์ชั่นล่าสุดเรียบร้อยแล้ว ต่อไป ก็ต้องบอก System ให้รู้ซะว่าผู้อ่านจะใช้เวอร์ชั่นนี้แหละ เป็นค่า default ไม่บอกมัน มันไม่รู้นะ :)
rvm --default use 2.1.0ทดสอบ
ruby -vจะได้ผลลัพธ์ดังนี้ เป็นอันเสร็จสิ้นการติดตั้ง ruby
ruby 2.1.0p0 (2013-12-25 revision 44422) [x86_64-linux]Step 4 : Install Rails
Rails ใช้เวลาในการติดตั้งนานพอสมควรเลย น่าจะนานกว่า ruby อีก (หรือว่าอาจจะขึ้นอยู่กับความเร็วอินเตอร์เนต ไม่แน่ใจ เพราะมีการดาวน์โหลดพวก dependencies ต่างๆด้วย)
gem install railsเพิ่ม javascript runtime โดยในที่นี้ ใช้ nodejs ซึ่งใช้การติดตั้งแบบ PPA เลย เพื่อความสะดวก และมีการอัพเดทอยู่เสมอ นะ จะบอกให้
sudo apt-get install python-software-propertiessudo add-apt-repository ppa:chris-lea/node.jssudo apt-get updatesudo apt-get install nodejs npmหาก ผู้อ่านไม่ได้ทำการติดตั้ง nodejs เวลาสั่งรันเซิฟเวอร์ อาจจะมีปัญหาได้
Step 5 : First App
ตอนนี้ขั้นตอนการติดตั้ง Ruby และ Rails ก็เรียบร้อยแล้ว ต่อไปจะลองให้ผู้อ่านได้ทำการทดสอบสร้าง application แรก ด้วย Ruby on Rails กันเลย การสร้าง application จะใช้คำสั่ง rails new ตามด้วยชื่อ application ตามนี้
rails new AppRailsตัว Rails จะเริ่มทำการสร้างไฟล์ให้เราแล้ว
create test/helpers create test/helpers/.keep create test/integration create test/integration/.keep create test/test_helper.rb create tmp/cache create tmp/cache/assets create vendor/assets/javascripts create vendor/assets/javascripts/.keep create vendor/assets/stylesheets create vendor/assets/stylesheets/.keep run bundle installรอ bundle install ซักครู่ จนขึ้นข้อความข้างล่าง
Your bundle is complete! Use `bundle show [gemname]`to see where a bundled gem is installed.ตอนนี้ server ของผู้อ่านก็ติดตั้งพร้อมแล้ว ต่อไปสั่ง run server เพื่อจะดูผลลัพธ์
cd AppRails/rails serverrails s คือคำสั่งแบบสั้น เพื่อสั่งให้ เซิฟเวอร์ เริ่มทำงาน
จะปรากฎข้อความด้านล่าง แสดงว่า รันเซิฟเวอร์ได้แล้ว
=> Booting WEBrick=> Rails 4.0.2 application starting in development on http://0.0.0.0:3000=> Run `rails server -h` for more startup options=> Ctrl-C to shutdown server[2014-03-03 19:15:52] INFO WEBrick 1.3.1[2014-03-03 19:15:52] INFO ruby 2.0.0 (2013-11-22) [x86_64-linux][2014-03-03 19:15:52] INFO WEBrick::HTTPServer#start: pid=7320 port=3000ลองเข้า http://0.0.0.0:3000 หรือ http://localhost:3000 ผลลัพธ์จะได้แบบนี้ เป็นอันเรียบร้อย

References :
- Authors
-
Chai Phonbopit
เป็น Web Dev ในบริษัทแห่งหนึ่ง ทำงานมา 10 ปีกว่าๆ ด้วยภาษาและเทคโนโลยี เช่น JavaScript, Node.js, React, Vue และปัจจุบันกำลังสนใจในเรื่องของ Blockchain และ Crypto กำลังหัดเรียนภาษา Rust