복붙노트

[RUBY-ON-RAILS] Heroku가에서 작업을 실행 2.3 스타일의 플러그인과 중단 경고 레일

RUBY-ON-RAILS

Heroku가에서 작업을 실행 2.3 스타일의 플러그인과 중단 경고 레일

나는 레일 3.2로 업그레이드하고, 갈퀴 DB를 실행 해요 : 마이그레이션 나에게 양식의 몇 가지 오류를 제공합니다 :

이 참조있어 또 다른 플러그인 디렉토리가 - 무엇 곤혹있어 내 공급 업체 / 플러그인 디렉토리가 비어 있다는 것입니다?

해결법

  1. ==============================

    1.당신에게 Heroku를 사용하고 있습니까?

    당신에게 Heroku를 사용하고 있습니까?

    rails_12factor 보석은 레일 4 필요합니다.

    최근 2013-08만큼, Heroku가 항상 심지어 권장 보석과 애플 리케이션, 레일 3 응용 프로그램을 플러그인을 주입. 이것은 루비 buildpack에 문제가 있었고, PR (11)에 의해 고정, 2013년 8월 6일에 합병했다.

  2. ==============================

    2.당신은 시도 할 수 있습니다

    당신은 시도 할 수 있습니다

    ::ActiveSupport::Deprecation.silenced = true
    

    당신의 production.rb에 그냥 소음 이후.

  3. ==============================

    3.에서 설정 / environment.rb에 추가 :

    에서 설정 / environment.rb에 추가 :

    ActiveSupport::Deprecation.silenced = true 
    

    레일을 초기화하기 전에, 너무 좋아 :

    # Load the rails application                                                                                                                                             
    require File.expand_path('../application', __FILE__)
    
    ActiveSupport::Deprecation.silenced = true                                                                                                                               
    
    # Initialize the rails application                                                                                                                                       
    MyApp::Application.initialize!
    

    마찬가지로 당신의 Rakefile 상단에있는 침묵의 설정 삽입 레이크 작업에 사용하지 않도록 경고하기 :

    # Load the rails application                                                                                                                                             
    require File.expand_path('../application', __FILE__)
    
    ActiveSupport::Deprecation.silenced = true                                                                                                                           
    
    # Initialize the rails application                                                                                                                                       
    MyApp::Application.initialize!
    

    선택적으로 만 생산 침묵 블록이 포장 할 수 있습니다 :

    if ENV['RAILS_ENV'] == "production"
      ActiveSupport::Deprecation.silenced = true
    end
    
  4. ==============================

    4.내가 찾은 가장 좋은 방법은 여기에 설명되어 있습니다. 이것은 당신이 검색하고 이전 스타일의 플러그인을 할 수 있기 때문에이 문제를 발견 가정한다.

    내가 찾은 가장 좋은 방법은 여기에 설명되어 있습니다. 이것은 당신이 검색하고 이전 스타일의 플러그인을 할 수 있기 때문에이 문제를 발견 가정한다.

    내가 배포 된 응용 프로그램의 어떤 맛을 기반으로, 내 카피 스트라 노 배포 중에 / 플러그인을 해제 할 수 있도록 필요한 때문에, 모든 부분에서 만들기 그것을하지 보석으로 갔다. 내가 config.plugins을 사용하기 전에 사용 플러그인을 지정합니다. 이 방법을 내가 대신 config.before_configuration의 "요구"사용하고 있습니다.

  5. ==============================

    5.그냥 /lib/silence_heroku_warnings.rb에 다음과 원숭이 패치를 넣어

    그냥 /lib/silence_heroku_warnings.rb에 다음과 원숭이 패치를 넣어

    module Rails
      class Plugin < Engine
    
        alias :not_silenced_initialize :initialize
    
        def initialize(root)
          ActiveSupport::Deprecation.silence{ self.send :not_silenced_initialize, root }
        end
    
      end
    end
    

    그것을 필요로의 설정 / application.rb 단지 레일을 요구 후 :

    require 'rails/all'
    require File.expand_path('../../lib/silence_heroku_warnings', __FILE__)
    

    2.X 스타일 플러그인의 모든 중단 된는 침묵해야한다. 기타 중단 된이 표시됩니다.

  6. ==============================

    6.여기, 경고를 침묵보다 깨끗한 방법은 당신이 할 수있는 것입니다.

    여기, 경고를 침묵보다 깨끗한 방법은 당신이 할 수있는 것입니다.

    로거 주입을 위해 당신은 자레드 벡 위에서 그의 답변에서 언급 한 Heroku가의 새로운 보석을 사용하려고 할 수 있습니다.

    우리가 대신 한 일은 이것이다 :

    당신은 당신의 공급 업체 / 플러그인 폴더에 같은 이름의 디렉토리가있을 경우 자신의 플러그인을 주입에서 Heroku가 억제 할 수 있습니다. 폴더는 존재해야합니다. Heroku가 다음의 플러그인을 주입하지 않으며, 어떤 코드가없는 경우, 레일은 중단 경고와 객체하지 않습니다. 우리는이 점을 설명하는 readme 파일을 넣어 :

    vendor/plugins/rails_log_stdout/readme.md
    

    로깅을위한 Heroku가의 주입 플러그인의 목적은 (그렇지 않은 파일에, STDOUT로 전송하는 로그를 요구한다)에게 Heroku 스타일의 로깅을 설정하는 것입니다. 그 뒤를 얻으려면, 우리는 내가이 답변에 설명 된 것을했다. 우리가 하나의 돌에 두 마리를 가지고 있으므로에게 Heroku의 기본 동작을 비틀기는, 어쨌든 유니콘을 위해 필요했다.

  7. ==============================

    7.사용 중단 통지를 침묵의 새로운 방법입니다 :

    사용 중단 통지를 침묵의 새로운 방법입니다 :

    config.active_support.deprecation = :silence
    

    당신의 설정 / 환경 / production.rb 파일입니다.

  8. ==============================

    8.Heroku가 마침내이 문제를 해결 한 것 같습니다.

    Heroku가 마침내이 문제를 해결 한 것 같습니다.

       Injecting plugin 'rails_log_stdout'
       Injecting plugin 'rails3_serve_static_assets'
       Add 'rails_12factor' gem to your Gemfile to skip plugin injection
    
  9. from https://stackoverflow.com/questions/9027403/rails-2-3-style-plugins-and-deprecation-warnings-running-task-in-heroku by cc-by-sa and MIT license