kinh-nghiem-lap-trinh ruby-on-rails - It costs 11 mins to read

Điểm xuất phát

Tôi – đã gần 4 năm từ lúc tốt nghiệp chuyên ngành CNTT của một trường Cao Đẳng thường thường bậc trung – đang quanh quẩn ở một công ty nghiên cứu thị trường, với một mức lương đủ sống. Đó là một công việc ổn định nhưng nhàm chán, không học hỏi được nhiều từ công việc, một phần cũng bởi nó không liên quan nhiều đến chuyên ngành mình đã học, phần còn lại là bởi công việc cứ lặp đi lặp lại, và khối lượng công việc rất nhiều khiến mình cảm thấy bị áp lực kinh khủng. 4 năm tuy ngắn nhưng thực dài. 

Chịu đựng như vậy là đã đủ, tôi quyết định là mình cần can đảm bước ra khỏi vòng tròn thoải mái của mình, quyết định dành cho bản thân mình một cơ hội, được làm những gì mình thích. Nếu không phải bây giờ, vậy thì là bao giờ? (Nếu không phải là tôi, thì là ai?)

Tôi thiết tha được trở lại với Lập trình Web nhưng ngại phải bắt đầu từ con số không (Hay con số âm nhỉ?) – Những kiến thức tích lũy về PHP, HTML, CSS, JavaScript, ASP.NET, Database… lâu không dùng nên đã bay biến. Tôi có hơi già để bắt đầu lại chăng? Tôi không muốn mình mắc kẹt ở sự trung bình, trung bình về mọi mặt… Và Tôi biết công việc hiện tại sẽ không đưa tôi đi đến đâu cả, bởi vì tôi không hoàn toàn yêu thích nó, có chăng chỉ là cố tìm những niềm vui nho nhỏ trong công việc thường ngày. Và ngày qua ngày, tôi thấy mình càng trở nên thiếu trách nhiệm với công việc hiện tại: tôi thường xuyên bị xao nhãng, thiếu tập trung, mắc lỗi ngày càng nhiều hơn, cáu gắt hơn, nóng nảy hơn… thỉnh thoảng, tôi tự thấy mình chỉ ráng làm qua loa cho xong việc. Tôi thấy mình ngày càng trở thành con người mà tôi không muốn trở thành… Tôi đang làm gì thế này? Ta đã làm chi đời ta? (Tiêu đề bài tản văn của Phạm Lữ Ân trong quyển “Nếu biết trăm năm là hữu hạn” cứ ám ảnh tôi mãi. – http://www.toitaigioibancungthe.vn/miennam/ta-se-lam-chi-doi-ta/ )

image

image

image

Và Tôi bắt đầu như thế nào

Sau khi xong công tác tư tưởng, bây giờ là lúc bước những bước đầu tiên đây.

image

Chuẩn bị tài liệu:

Khi tìm Blog chia sẻ kinh nghiệm học Ruby trên Internet thì tình cờ lạc vào trang của Kylembrown. Mình thấy cách tiếp cận của anh ta hợp với phương hướng tiếp cận của mình: Sau khi thực hành xong App Recall của TutPlus, Kylem sử dụng Bootstrap, Git cho App Recall và cuối cùng là commit nó lên Heroku. Việc deploy ứng dụng lên Internet (Heroku – Hosting khá nổi tiếng trong cộng đồng Ruby, có cung cấp gói miễn phí cho Developer) là một động lực không nhỏ để bạn bước tiếp con đường đầy thử thách phía trước.

Một ngày đau đầu với Heroku – Sau khi đưa Workless vào góp phần làm cho cái App Recall này trở nên xấu hơn, thực hành sử dụng Git, Push lên Repository của mình trên Github, mình đã deploy nó lên Heroku. Thật đau đầu, đụng hết từ lỗi này đến lỗi khác, từ lỗi trong Code, đến lỗi trong việc Configure App để Heroku hiểu. Hết ErrorCode H14, H20 rồi đến H10, liên tục commit, push rồi lại xem Logs để tìm lỗi… Rồi đi từ phát hiện này đến phát hiện khác.

Tham khảo Error Code – https://devcenter.heroku.com/articles/error-codes

Tham khảo Getting Started with Ruby on Heroku – https://devcenter.heroku.com/articles/getting-started-with-ruby#introduction

Heroku with Postgresql – https://devcenter.heroku.com/articles/heroku-postgresql

Trước tiên là Gemfile và Gemfile.lock, Heroku yêu cầu phải có 2 file này, thế là phải dùng đến Bundle (Bundle init và Bundle Install), nhờ vậy mà biết thêm cách quản lý Gem.

Tiếp theo là File Config.ru, File Procfile.

Heroku không dùng Sqlite, thế là lại phải cài đặt Postgresql vào Ubuntu (Postgresql, Postgresql-contrib, Postgresql-dev – cần thiết nếu bạn muốn cài các Gem liên quan đến Postgresql vào Ruby) – Tham khảo thêm tại https://www.digitalocean.com/community/tutorials/how-to-install-and-use-postgresql-on-ubuntu-14-04

Fix lỗi R10 khi chạy App Sinatra + Heroku – http://stackoverflow.com/questions/17036951/heroku-production-issues-with-sinatra-app-error-r10

Và … Finally, It works!!!

Cuối tháng 8/2014 –

Những ngày tiếp theo, trở lại với công việc thường ngày, một số dự án mình đang handle đến deadline nên mình đành gác lại việc học Ruby một thời gian để hoàn thành những dự án kia. (Nhưng có vẻ là càng ngày công việc Data Processing đó ngày càng chán đối với mình).

Tranh thủ thời gian này, cài một Blog cá nhân bằng Ruby, Sau một thời gian tìm hiểu thì quyết định dùng thử Octopress xem sao. Octopress sử dụng Markdown, vậy là mình phải đọc qua Syntax của Markdown một chút. Lại tiếp tục gặp rắc rối với việc Deploy lên Heroku nhưng nhờ việc đã từng có kinh nghiệm trước đó nên lần này đã giải quyết nhanh hơn, gặp ít lỗi hơn.

Sử dụng rvm, chuyển qua dùng Ruby 1.9.3 cho Application Folder Octopress.

rvm use 1.9.3
bundle install

Ngày 01/09/2014 – Nói chuyện với anh bạn mình, cũng đang là một Web Developer, mới biết, thế giới công nghệ tiến nhanh quá… Nghe nó giới thiệu về Node.JS, Angular.JS, thích mê… Nhưng mà thôi, mình cần tránh lan man, cứ lo học tốt Ruby, Sinatra và Rails đã… (Hiện còn nhiều kiến thức liên quan cần phải tìm hiểu quá: CoffeeScript, SCSS, Slim, HAML, Unit Test, Debug, PostgreSQL, MongoDB, Bootstrap..)

Đã luyện xong quyển Jump Start Sinatra rồi, giờ bắt tay vào làm một dự án thực tế cho công ty để ứng dụng những kiến thức đã tiếp nạp thôi.

Ngày 11/09/2014 – Sau 10 ngày mà dự án mình làm vẫn chưa hoàn thành, những phần râu ria thì ok rồi. Vì làm đến đâu tìm hiểu đến đó nên tiến độ có vẻ chậm – Giờ còn một hai phần xương xẩu nhất thôi.

Ngày 11/11/2014  – Sau 3 tháng học Ruby, mình đã có một quyết định là xin một công việc về Ruby on Rails để toàn tâm toàn ý cho sự học. TGM đăng tuyển, thế là mình đã chớp lấy cơ hội, dù thực ra thời điểm đó mình chỉ mới học Ruby được 2 tháng, học về Sinatra chứ không hề biết tí gì về Rails.

Update thêm một số bài viết tìm được trên Blog về Ruby

http://astonj.com/tech/whats-special-about-ruby/

http://astonj.com/tech/whats-so-special-about-ruby-on-rails/

http://astonj.com/tech/rails-is-easy-to-learn/

http://astonj.com/tech/best-way-to-learn-ruby-rails/

http://astonj.com/tech/advanced-ruby-rails-books/

http://rubykoans.com/

http://astonj.com/life/best-way-to-learnreadstudy/

https://practicingruby.com/

RailsCast, ASCIICasts, GoRails

http://www.codecademy.com/tracks/ruby

List các bài viết hay này được bổ sung rất nhiều trong quá trình tìm hiểu Ruby on Rails, mình đã bookmark lại bằng Google Chrome và RedNotebook, sẽ chọn lọc và cập nhật danh sách này sau nhé

Tóm tắt

https://www.codeschool.com/courses/discover-devtools