(J)Ruby บน Google App Engine
หลังจากใช้ความพยายามมา 2 วันในการพยายามทำ Hello World JRuby ขึ้น Google App Engine ให้ได้ซึ่งจากหลายๆแหล่งผมพยายามทำตาม เสร็จแล้วก็ติดปัญหาจุกจิกมากมาย ซึ่งผมก็เชื่อเขาว่าให้ใช้ JRuby แต่สุดท้ายวิธีที่ผมได้ผลก็คือ Ruby ธรรมดาเนี้ยและ ได้แบบไม่มีปัญหาเลยด้วยครับผม วันนี้ผมเอาวิธีทำ Sinatra บน Google App Engine มาฝากครับ
http://blog.bigcurl.de/2009/04/running-sinatra-apps-on-google.html
ซึ่งจริงๆแล้วผมก็ทำตามจากที่นี้ทั้งหมดครับ เพียงแต่ว่ามันไม่ได้ตามเปะๆเจอปัญหาต่างๆนานา ที่ค้นหาใน Google ก็ไม่เจอ แต่ผมพอมีความคุ้นกับ Java/Servlet อยู่บ้างเลยพอเข้าใจว่าต้องทำอะไร พอคล่ำๆไปสักพักก็เลยมาถูกทาง ดังนั้นผมจะสรุปจากบทความด้านบนนะครับผม มีขั้นตอนทำดังนี้ครับ อาจจะยาวหน่อย โดยอันนี้ผมทำแบบ Version Windows ที่ผมทำได้จริงนะครับ แต่ก่อนทำคุณต้องมี Account Google App Engine ก่อนนะครับ แล้วก็สร้าง App-id สักตัวหนึ่ง
- ใช้ Ruby 1.8.6 One-Click-Installer
- พอลงเสร็จ ก็เข้า Command-line จาก run -> cmd
- พิมพ์ gem install
rake sinatra warbler - ทำการสร้าง folder ใน drive C: เป็น sinatra-app
- ภายใน folder sinatra-app ให้สร้าง folder ดังนี้เพิ่มไป
views public config lib - พอสร้าง folder เสร็จก็สร้างไฟล์ดังนี้ครับ
config.ru , app.rb , appengine-web.xml - เสร็จแล้วไป copy โค้ดใส่แต่ละไฟล์ที่นี้ http://gist.github.com/91801
- จะสังเกตว่ามีไฟล์ warble.rb ด้วยอีกไฟล์ให้สร้างใน folder config ดังนั้นไฟล์นี้จะอยู่ config/warble.rb
- ขั้นตอนนี้เป็นขั้นตอนลัดนะครับ เพราะมีบางตัว run ใน windows ไม่ผ่านผมเลยทำการรวมไฟล์ lib ที่จำเป็นไว้ให้เรียบร้อยแล้ว โหลดได้เลย
- พอโหลดเสร็จก็นำไปแตก zip ที่ folder ใน sinatra-app/lib นะครับ
- เสร็จแล้วก็เข้า command-line แล้วไปที่ folder sinatra-app โดยพิมพ์ c: ตามด้วย cd ตามด้วย cd sinatra-app
- พอเข้ามาถึงพิมพ์ warble เฉยๆเลยมันก็จะทำการจัดการให้เสร็จ
เปิดไฟล์sinatra-app/tmp/war/WEB-INF/gems/gems/sinatra-0.9.1.1/lib/sinatra.rb
- ทำการ comment (ใช้สัญลักษณ์ #) ที่บรรทัดสุดท้ายที่เขียนว่า
use_in_file_templates! - แล้วไปเรียก warble ใน folder sinatra-app เหมือนเดิมอีกที
- เสร็จแล้วให้ไปโหลด Google App Engine SDK
- เอาไปแตกอยู่ drive C: เหมือนกัน (เพื่อความง่าย) และเปลี่ยนชื่อโฟลเดอร์เป็น appengine-java-sdk
- เสร็จแล้วก็เข้า command-line และไปอยู่ใน drive C: root (C:)
- ทดลอง app ด้วยการพิมพ์ appengine-java-sdkbinappcfg.cmd sinatra-apptmpwar
- ถ้าไม่มีอะไรผิดพลาดมันจะขึ้นบอกว่า app ถูก run อยู่ที่ http://localhost:8080 เราลองเข้าไปดูว่าขึ้น Hello ไหม
- ถ้าขึ้นละก็เตรียม upload ขึ้น app กันได้เลยแต่ต้องแก้นิดหน่อย
- เปิดไฟล์ใน sinatra-app/appengine-web.xml
- เปลี่ยนจาก
YOUR-APPLICATION-IDเป็น app-id ของคุณ (app-id คือชื่อ app ที่ตั้งใน Google App Engine) - เสร็จแล้วก็ warble
- เข้าไป drive C: พิมพ์ appengine-java-sdkbinappcfg.cmd update sinatra-apptmpwar (แบบนี้เท่านั้นห้ามพิมพ์ / แทน )
- ถ้าถูกต้องมันจะถาม email กับ password เราก็ใส่ไปแล้วก็รอๆๆ
- พอเสร็จเราก็เข้าไปดูได้เลยที่ app-id-ของคุณ.appspot.com
- ครั้งแรกจะนานพอดูเลย แล้วพอครั้งหลังๆก็จะเร็วขึ้น (รอ compile นะและ)
เสร็จแล้วววว คำสั่ง appcfg.cmd นั้นใช้ใน windows นะครับถ้าใช้ linux หรือ mac osx จะใช้ appcfg.sh แทนนะครับ หวังว่าคงชอบ Ruby คงมีเฮกันแล้วคราวนี้
เนื้อหาคล้ายกันที่น่าสนใจ



คุณพระช่วย กล้วยทอด !!