How to develop Ruby on Rails with Windows 10’s Linux Subsystem


It has been quit sometimes that Windows developer don’t have an easy way to create Rails application. The most common way is to install Linux Virtual Machine or Docker. In a latest update of Windows 10, It has a new feature called “Windows Subsystem for Linux”. Underneath of this subsystem is Ubuntu Linux. In this article, I will guide you to create the Rails application based on Windows Subsystem for Linux.

Prepare a System

  1. Making sure your Windows Version is build 1607+, by Open Settings > System > About

  2. Enable Windows Subsystem for Linux by Open Settings > search for Turn Windows features on or off then check Windows Sussystem for Linux (Beta)


  3. Turn On Developer Mode, by Open Settings > Update & Securities > For developers

  4. Open Bash command by search from Task Bar. As the first time, It will ask you to install Linux Subsystem. You can press Y to continue. After that you can give the user name of your Ubuntu. In this article we use root


Install Ruby On Rails

After that you can start to install Ubuntu Libraries and Ruby On Rails just like you work under Ubuntu Linux

  1. Install Ruby and Libraries via apt-get

      apt-get update apt-get install git-core curl zlib1g-dev build-essential libssl-dev libreadline-dev libyaml-dev libsqlite3-dev sqlite3 libxml2-dev libxslt1-dev libcurl4-openssl-dev libffi-dev nodejs ruby ruby-dev 
  2. Install Rails with RubyGem

      gem install rails 

Create your first Rails App on Windows

Everything will be the same as regular Rails development under Unix system from now on

  1. Create Rails App

      rails new e-shop 
  2. Run database migration and start rails servers

      cd e-shop
      rails db:migration
      rails server 

Congratulation!. You now can see that Windows subsystem Linux allow us to develop a whole Ruby On Rails ecosystem in Windows 10. Please feels free to drop a question or comment

 

References

UX กันไปทำไม ทำแล้วได้อะไร


ถ้าอยากให้ของขวัญซักชิ้นกับเด็กผู้หญิง หลายคนคงจะเลือกตุ๊กตาน่ารักซักตัวหนึ่ง แต่ถ้าอยากให้ของขวัญเด็กผู้ชาย เราก็คงเลือกรถยนต์บังคับเท่ๆ ซักคัน แต่ถ้าเราไม่รู้ว่าจะเอาของขวัญนี้ไปให้ใคร การเลือกของขวัญจะกลายเป็นเรื่องยากมากๆ

ในทางกลับกัน ถ้าเรารู้ข้อมูลเพิ่มเติมมากขึ้นว่าผู้ที่รับของขวัญนั้น เป็นเด็กผู้ชายอายุ 5 ขวบ ที่ติดตามรายการการ์ตูนและกีฬา ในวันว่างๆ พ่อกับแม่ของเด็กคนนี้จะชอบพาไปพิพิธภัณฑ์วิทยาศาสตร์ และน้องชอบอ่านหนังสือที่มีรูปผี แต่พ่อแม่ไม่อยากให้อ่านเลย ข้อมูลเหล่านี้ย่อมเป็นสิ่งที่บอกเราได้อย่างดีว่าเราควรจะซื้ออะไรให้น้อง

ลองเทียบดูสิครับ ระหว่างที่เรารู้แค่ว่าผู้ที่รับของขวัญจากเราเป็นเพียงเด็กผู้ชายคนหนึ่ง กับการที่เรารู้ลึกลงไปถึงชีวิตประจำวันของเด็กคนนี้ มันส่งผลต่อการเลือกของเรามากขนาดไหน และการเลือกของโดยที่เรารู้ว่าจะเอาไปให้ใคร จะช่วยสร้างความประทับใจได้มากกว่าแบบเห็นได้ชัด และเราจะเสียดายขนาดไหน ถ้าเราต้องเลือกของขวัญให้ใครคนหนึ่ง โดยที่รู้จักคนๆ นั้นแค่เพียงผิวเผิน

“ความรู้สึกเสียดายต่องานนั้นๆ ก็คือความรู้สึกของคนที่ทำงานด้าน UX ครับ”

ที่บอกได้แบบนี้ก็เพราะการรู้จักผู้ใช้เพียงผิวเผินทำให้เราพลาดโอกาสที่จะสร้างสิ่งที่ผู้ใช้จะรู้สึกว่ามันเป็นเสมือนของขวัญของเขา และเป็นสิ่งที่จะช่วยแก้ปัญหาให้กับเขาได้ แม้ว่าหลายครั้ง เขาจะไม่รู้มาก่อนเลยว่าเขาควรจะอยากได้มัน ไม่ว่าสิ่งนั้นจะเป็นเครื่องปรับอุณหภูมิห้อง โปรแกรมในคอมพิวเตอร์ โปรแกรมบนสมาร์ทโฟน เว็บไซต์ หรือเครื่องดูดฝุ่น งานออกแบบ UX หรือ User Experience จะสามารถทำให้ของเหล่านั้นเป็นของขวัญที่ผู้ใช้ “รัก” ได้

ในทางกลับกัน ธุรกิจหรือสินค้าที่ไม่รู้จักผู้ใช้มาก่อน ย่อมมีโอกาสที่จะสร้างความประทับใจกับผู้ใช้ได้อย่างน้อยนิด และแทบจะพูดได้ว่าเป็นเหมือนการเสี่ยงดวงระดับปิดตายิงเป้าเลยทีเดียว เพราะเมื่อเราไม่รู้ว่าเป้าอยู่ตรงไหน สิ่งที่เรามักจะทำ ก็คือการเพิ่มจำนวนลูกธนูให้เยอะที่สุด หรือทำลูกธนูให้ใหญ่ที่สุด ยิงปืนใหญ่ได้ยิ่งดี ซึ่งวิธีการแก้ปัญหาแบบนั้น ทำให้การลดต้นทุน ซึ่งเป็นปัจจัยสำคัญของการทำธุรกิจนั้นแทบเป็นไปไม่ได้ และกว่าจะได้งานชิ้นหนึ่งออกมา ก็ต้องใช้เวลานานขึ้น และที่สำคัญคือการทำงานกับทีมงานที่มีเป้าหมายในงานไม่ชัดเจนมันจะยากมากๆ
Read more  

Generating Android app screenshot with Screengrab


Screengrab is a part of Fastlane. It can help us to generate screenshot with different languages.

Before you use Screengrab, you need to write UI test with Espresso. Because Screengrab capture screenshot through Espresso.

Create simple application are text view and button with two locales English and Thai.

screenshot-2016-08-09-21-09-42

 

Read more  

Testing elapsed time with Espresso IdlingResource


The original blog is Espresso: Elapsed time.

When do you need to write the test that needs to wait, you need to use IdlingResource. Because Espresso does not wait for you.

Create simple elapsed time application, with one button and one text view. When to clicking the start button, the number will run until click stop button.

screenshot-2016-07-28-23-53-34

 

Read more  

How to Testing your intent with Espresso


Android system uses intent for communication. Intent can contain information (component, action, category, data, extras and more). We can send the intent to other application and can get it from other application too.

In this blog we will create the simple application can take a photo and show photo in the image view.

screenshot-2016-07-16-23-19-34

Read more  

Android Push Notification using Firebase


Firebase

Firebase has tools and infrastructures to build the app. It contains a lot of features, in this blog we will take a look at how to setting up Android application for receive notification from Firebase Cloud Messaging.

If you are using Google Cloud Messaging, Google recommended to upgrading FCM, because FCM is a new version of GCM.

Setup

First, go to Firebase console, log in your account then click to create a new project, fill your project name and region.

screenshot-2016-05-29-21-55-46

Read more