หลังสร้าง Rails apps ไปหลายตัว คุณจะมีวิธีทำงานที่ชอบ เช่น อยากให้ awesome_print ใน Rails consoles เสมอ หรือ rails new สร้างโปรเจกต์用 rspec แทน minitest
แค่ระบุ preferences ทุกครั้งที่รันคำสั่ง อาจแค่รำคาญนิดหน่อย แตง่ายมากที่จะลืม และโกรธตอนคอมพิวเตอร์ไม่ทำสิ่งที่คุณคิดว่าสั่งแล้ว:
$ rails new best_app_ever
^C (sigh...)
$ rm -r best_app_ever
$ rails new best_app_ever --template=my_templateมีวิธีง่ายกว่า ด้วยการปรับเล็กน้อย คำสั่งเหล่านี้จะจำ preferences คุณ ไม่ต้องระบุซ้ำ
จับ preferences ด้วย .rc files
Ruby tools หลายตัวให้เก็บ preferences ด้วย .rc files อย่างง่าย
.rc files อยู่ใน home directory:
$ ls ~/.*rc
.bashrc .irbrc .screenrc .gemrc .railsrc .zshrcและให้คำสั่งอย่าง gem, irb, rails หา preferences คุณ นี่คือ .rc files ที่ควรลอง:
.irbrc
ตอนรัน rails console อยากเห็น objects awesome_printed โดย default พิมพ์ AwesomePrint.irb! ทุกครั้ง ตั้งใน ~/.irbrc:
require "awesome_print"
AwesomePrint.irb!ครั้งหน้าที่เริ่ม rails console objects จะพิมพ์สวยขึ้นอัตโนมัติ
.irbrc ยังดีสำหรับ hacky convenience methods ช่วยเล่นกับ objects:
require "awesome_print"
AwesomePrint.irb!
# returns instance methods on klass that aren't already on Object
def m(klass)
klass.public_instance_methods - Object.public_instance_methods
end~/Source/rcfiles jweiss$ bin/rails c
Loading development environment (Rails 4.1.1)
irb(main):001:0> m ActiveRecord::Base
[ [ 0] [](attr_name) ActiveRecord::Base (ActiveRecord::AttributeMethods) (unbound)
[ 1] []=(attr_name, value) ActiveRecord::Base (ActiveRecord::AttributeMethods) (unbound)
[ 2] _commit_callbacks() ... about 200 more methods...ปรับแต่ง environment แบบนี้ คุณจะรู้สึกว่า libraries ที่ใช้เป็น ของคุณ ไม่ใช่แค่ libraries ที่คุณ ใช้
.gemrc
Rubygems มี .rc file ของตัวเอง ทำให้จัดการ gems สะดวก เยอะใช้ .gemrc ข้าม rdoc และ ri generation ทำให้ gems install เร็วขึ้น:
gem: --no-documentแตทำอะไรได้อีกเยอะ มีค่าอื่นปรับใน .gemrc เช่น :sources: (หา gems ที่ gem servers อื่น) และ :backtrace: (ดู full backtrace ตอน error):
gem: --no-document
:backtrace: true
:sources:
- https://my.internal.gem.server
- https://rubygems.orgดู settings อื่นๆ ใน gem environment command documentation
.railsrc
หลายปีก่อน Rails 3 ทำให้ generate apps ไม่ใช้ default stack ง่าย ถ้าอยาก app ไม่ใช้ minitest (เพื่อใส่ rspec หลัง) ง่ายแค่:
$ rails new my_awesome_app --skip-test-unitหรือที่ทำงานมี project template เอง:
$ rails new my_awesome_corporate_app --template=https://example.com/my_app_templateคุ้นเคย stack แล้ว จะอยากใช้ทุกโปรเจกต์ใหม่ แตง่ายลืมเพิ่ม parameters ตอน generate ตั้งใน .railsrc:
--template=https://example.com/my_app_template
--database=postgresqlตอนนี้รัน rails new ด้วย parameters ถูกต้องทุกครั้ง และอยาก override สำหรับโปรเจกต์เดียว ทำได้ด้วย --no-skip-test-unit commands
ทำให้ environment เป็นของคุณ
การ config เล็กน้อยล่วงหน้า ทำให้ environment รู้สึกเหมือนบ้าน ข้ามความเจ็บปวดรันคำสั่งโดยไม่มี parameters ที่อยากได้ ไม่ต้องขุด docs หา options ถูกต้อง และเข้าสู่ส่วนสนุกของการเขียนโค้ดทันที