Rubby on Rails의 코드는 동일하지만 환경에 따라 글의 다양한 현상과 대응을 나타냅니다.

4469 단어 RailsRubytech

개시하다


최근 제목에 부딪히는 현상을 조사해 발생 조건부터 대응까지 비망록으로 남겼기 때문이다.

컨디션

  • 로컬 개발 환경
  • Ruby: 2.3.8
  • Ruby on Rails: 4.2.6
  • 용기 이미지:ruby:2.38
  • 클라우드의 개발 환경
  • Ruby: 2.3.8
  • Ruby on Rails: 4.2.6
  • 용기 이미지:alpine:3.10
  • 각locale 파일에 같은 키가 존재한다(이하 코드 참조)
  • en.yml
    en:
      hello: "Hello world."
    
    en2.yml
    en:
      hello: "Hello another world."
    
  • locale 파일을 읽는 Rubi on Rails의 코드는 모든 환경에서 동일
  • 현상.


    Ruby on Rails에서 locale 파일의 키를 사용할 때 각 환경에 표시되는 글이 다릅니다.
  • 로컬 개발 환경
  • en2.yml 키 값
  • 클라우드의 개발 환경
  • en.yml의 키 값 (Hello world.)뷰.
  • 조사하다.


    환경마다 참조하는locale 파일이 다르기 때문에locale 파일의 읽기 순서가 이상하다고 생각합니다.
    따라서 Rubbyon Rails를 시작할 때 locale 파일의 읽기 위치를 조사한 결과 config/aplication이 발견되었습니다.rb를 통해 다음 코드를 읽었습니다.
    application.rb
    module RailsSample
      class Application < Rails::Application
        # 中略
        config.i18n.load_path += Dir[Rails.root.join('config', 'locales', '**', '*.yml')]
      end
    end
    
    클라우드 개발 환경에서 이 읽기 처리를 시도했습니다 Dir[Rails.root.join('config', 'locales', '**', '*.yml')]
    app/config/locales/en2.yml
    app/config/locales/en.yml
    
    순으로 읽습니다.
    다른 한편, 현지 개발 환경에서 같은 처리를 시도했다.
    app/config/locales/en.yml
    app/config/locales/en2.yml
    
    순으로 읽습니다.
    따라서 로컬/클라우드 컴퓨팅에서의 개발 환경에서 읽기 처리가 바뀌어 제목 현상이 생겼다.
    그렇다면 왜 이 읽기 처리가 달라질까요?
    읽기 처리를 조사하고 있을 때 이 문장은 성공했다.
    이 보도도 나와 같은 현상을 만났다.
    https://qiita.com/devzooiiooz/items/43da78f1c3c5c0552710
    이 문장과 참고 문장에서 원인을 총결하다
  • Dir가 파일을 가져오는 순서는 생성 순서가 아닙니다
  • .
  • 파일의 수령 순서는 물리적 입구 순서
  • 그렇습니다.
    이 때문에 로컬/클라우드 개발 환경에서locale 파일의 물리적 입구 순서에 따라 읽기가 달라졌습니다.

    대응


    말할 것도 없이 열쇠가 중복되는 것은 문제이기 때문에 중복되지 않는 키로 바꾸어 해결할 수 있다.
    en.yml
    en:
      hello: "Hello world."
    
    en2.yml
    en:
      hello2: "Hello another world."
    

    끝말


    읽는 순서가 정해지지 않을 때 왜요?하지만 곰곰이 생각해보면 서류의 집합만 읽고 있기 때문에 순서가 달라도 위화감이 없다.
    만약 이 보도가 다른 사람을 도울 수 있다면 매우 좋겠다.

    좋은 웹페이지 즐겨찾기