Я обновляете приложение Rails 3.2 к Rails 4, и я бегу на вопрос с какой-то стойки промежуточного слоя:Зачем мне удалять Rails 4.0.2 Hash # diff Предупреждение об устаревании внутри промежуточного раздела/стойки?
Я получаю следующее сообщение об ошибке: DEPRECATION WARNING: Hash#diff is no longer used inside of Rails, and is being deprecated with no replacement. If you're using it to compare hashes for the purpose of testing, please use MiniTest's assert_equal instead.
Линия, по-видимому, вызывая это @app.call(env)
от ниже:
class NoWww
def initialize(app)
@app = app
end
def call(env)
request = Rack::Request.new(env)
if request.host =~ /^[^.]+\.[^.]+$/
[301, {"Location" => request.url.sub("//","//www.")}, self]
else
@app.call(env)
end
end
def each(&block)
end
end
Примечание уверен, как @app.call(env)
является запуск этой Hash # Diff устаревания предупреждение ...?
UPDATE
Мой Middleware Stack выглядит следующим образом:
use Rack::Sendfile
use ActionDispatch::Static
use Rack::Rewrite
use Rack::Lock
use #<ActiveSupport::Cache::Strategy::LocalCache::Middleware:0x0000010369c180>
use Rack::Runtime
use Rack::MethodOverride
use ActionDispatch::RequestId
use Rails::Rack::Logger
use ActionDispatch::ShowExceptions
use ActionDispatch::DebugExceptions
use BetterErrors::Middleware
use ActionDispatch::RemoteIp
use ActionDispatch::Reloader
use ActionDispatch::Callbacks
use ActiveRecord::ConnectionAdapters::ConnectionManagement
use ActiveRecord::QueryCache
use ActionDispatch::Cookies
use ActionDispatch::Session::CookieStore
use ActionDispatch::Flash
use ActionDispatch::ParamsParser
use Rack::Head
use Rack::ConditionalGet
use Rack::ETag
use NoWww
use OmniAuth::Builder
run JobBoard::Application.routes
ли вы возражаете обмена стек промежуточного программного обеспечения, чтобы мы могли помочь расследовать этот вопрос? (Run 'rake middleware') – sikachu
@Sikachu добавил спасибо! – cman77
Знаете ли вы, что какой-либо из драгоценных камней в вашем проекте вызывает метод 'Hash # diff'? У меня были такие же уведомления об изъятиях и выяснили, что один из драгоценных камней, который я использовал, сделал. Итак, я просто скопировал код [Rails 4 Hash # diff] (https://github.com/rails/rails/blob/4-0-stable/activesupport/lib/active_support/core_ext/hash/diff.rb) (за вычетом уведомления об устаревании) и поместите его в файл ** config/initializers/hash.rb **. Это избавило меня от уведомлений, но, очевидно, это следует рассматривать как временное обходное решение, пока все ваши зависимые камни перестанут использовать этот метод. –