Một số Rails console tricks

Sau đây mình sẽ viết ra một số lệnh hữu ích thường được sử dụng trong rails console. Trong đó sẽ có một số cái bạn đã từng biết và sử dụng thường xuyên, cũng có một số cái mà bạn chưa biết và không đề ý đến. Đặc biệt là những bạn mới bắt đầu tìm hiểu về rails.

  • Có thể gọi View Helper trong rails console
pry(main)> helper.pluralize(3, 'person')
=> "3 people"

helper.truncate("Ruby on rails", length: 7)
=> "Ruby..."
  • Cũng có thể sử dụng được Tab. Chỉ cần gõ vài chữ xong bạn ấn keyboard Tab, trong rails console sẽ autoComplete hoặc gợi ý cho bạn.
pry(main)> User.first.ema
User.first.emacs_editing_mode        User.first.email_change              User.first.email_regexp
User.first.emacs_editing_mode?       User.first.email_change_to_be_saved  User.first.email_regexp=
User.first.email                     User.first.email_changed?            User.first.email_required?
User.first.email=                    User.first.email_field               User.first.email_was
User.first.email?                    User.first.email_field_tag           User.first.email_will_change!
User.first.email_before_last_save    User.first.email_in_database         User.first.emailbx
User.first.email_before_type_cast    User.first.email_previous_change
User.first.email_came_from_user?     User.first.email_previously_changed?
  • Sử dụng pp để hiển thị kết quả đẹp hơn
pry(main)> user = User.first
  User Load (0.5ms)  SELECT  `users`.* FROM `users` ORDER BY `users`.`id` ASC LIMIT 1
=> #<User id: 1, name: "Vito Harris", phone_number: "1", created_at: "2018-12-0714:15:47", updated_at: "2018-12-07 14:19:00">
pry(main) > pp user
#<User:0x000000051a8358
 id: 1,
 name: "Vito Harris", 
 phone_number: "1", 
 created_at: "2018-12-0714:15:47", 
 updated_at: "2018-12-07 14:19:00">
  • Lấy giá trị cuối cùng được thực hiện trong rails console sử dụng dấu _
pry(main)> User.limit(5).pluck(:name)
   (0.3ms)  SELECT  `users`.`name` FROM `users` LIMIT 5
=> ["Vito Harris", "Gunner Auer", "Miss Jaylan Roberts", "Kieran Koss MD", "Geraldine Eichmann"]
pry(main)> names = _
=> ["Vito Harris", "Gunner Auer", "Miss Jaylan Roberts", "Kieran Koss MD", "Geraldine Eichmann"]
  • Tìm kiếm method dùng grep. Vd: tìm tất cả các method của user có chứa từ "devise"
>> pry(main)> User.new.methods.grep(/devise/)
  User Load (0.4ms)  SELECT  `users`.* FROM `users` ORDER BY `users`.`id` ASC LIMIT 1
=> [:devise_modules?, :devise_modules, :devise_mailer, :send_devise_notification]
  • Tìm vị trí của một method. Có rất nhiều bạn gặp khó khăn khi tìm kiếm một method không định nghĩa rõ ràng. Vd: sử dụng metaprogramming define_method để khai báo một method. Cách này có thể giúp bạn tìm được vị trí của một method dễ hơn.
pry(main)> User.new.method(:email_required?).source_location
=> ["/Users/kim/project/test/app/models/user.rb", 34]

Bạn sẽ thấy vị trí method email_required? nằm trong model user dòng 34.

  • Nếu bạn muốn trả về luôn source code của một method thì có thể gọi .source.display
pry(main)> User.new.method(:email_required?).source.display
  def email_required?
    false
  end
=> nil

Tài liệu tham khảo