Rails 5.2.0 to 6.0.0
* 6.0 에서 ActionText를 사용할 수 있다! 흥미로움
1. Rails 6은 Ruby 2.5.0 이상 버전에서 동작
2. rails app:update 를 실행
3. config.load_defaults in config/application.rb 변경하기
config.load_defaults 6.0
application.rb에 Rails.autoloaders.logger = method(:puts) 입력 시 레일즈 시작할때 autoloads되는 것들을 볼 수 있음.
https://edgeguides.rubyonrails.org/6_0_release_notes.html
https://guides.rubyonrails.org/autoloading_and_reloading_constants.html#common-gotchas
원인을 찾는 중
상속관계
ApplicationController (get_current_user)
AdminController (before_action: verify_admin 내에서 ApplicationController의 get_current_user 호출 불가)
BController ....대체 왜 6.0에서는 불가능한것이지?
원인은 찾음. 6.0부터는 autoloading 방식이 :zeitwerk이 기본
(방식에는 :zeitwerk and :classic 두가지가 존재하는데, 6.0 이전에는 :classic 방식을 사용했었음)
만약 서비스 중인 어플리케이션이라면, application.rb 에 config.autoloader = :classic으로 세팅 후 사용하는 것이 나을 듯
zeitwerk autoload 방식은 https://mnworld.co.kr/1909 으로 업데이트 중
https://weblog.rubyonrails.org/2019/2/22/zeitwerk-integration-in-rails-6-beta-2/
https://github.com/fxn/zeitwerk/issues/19
https://medium.com/@fxn/zeitwerk-a-new-code-loader-for-ruby-ae7895977e73
skip_before_action :verify_authenticity_token 이슈도 살펴봐야 함
수정 시 puma가 controller 로딩 못하는 상황
begin
load File.expand_path('../spring', __FILE__)
rescue LoadError => e
raise unless e.message.include?('spring')
end
bin/rails에 추가
model에 override된 메서드가 동작을 안함..
-> https://github.com/rails/rails/issues/36100
-> https://github.com/rails/rails/issues/35749
Override 이슈 -> 해당이슈도 https://mnworld.co.kr/1909에서 같이 정리 중.
그 외,
features.where(awesomeness: 10..) 와 같이 endless ranges가 가능
bin/rails db:system:change --to=postgresql 명령어를 쓰면 sqlite에서 postgresql로 바로 변경이 가능
'옛글 > Ruby on the Rails' 카테고리의 다른 글
DB의 index와 rails가 기억하는 index가 틀려 duplicate 에러가 나는 경우 (1) | 2020.10.22 |
---|---|
Rails autoloader :zeitwerk 방식 *업데이트 중 (0) | 2019.05.27 |
Mac Postgres install and command (0) | 2019.03.27 |
Rails 구글 크롬 노티피케이션(푸쉬) FCM(Firebase)로 붙이기 (0) | 2017.10.13 |
[Ruby on rails] ElasticSearch 를 붙여보자 (0) | 2017.04.14 |