Heroku的rake任务无法预编译资源 - NameError:未初始化的常量ValidatesTimeliness

时间:2015-01-22 21:09:58

标签: ruby-on-rails heroku rake heroku-postgres

当我将我的Rails 4应用程序推送到Heroku时,它会生成一个" assets:precompile rake task"失败:

remote:   Running: rake assets:precompile
remote:   rake aborted!
remote:   NameError: uninitialized constant ValidatesTimeliness

看来Heroku无法预编译资产,因为gem" ValidatesTimeliness存在问题。"根据Heroku关于Rails 4资产管道的文档,我运行了

 RAILS_ENV=production bundle exec rake assets:precompile

查看问题是否也出现在我的本地环境中。它确实;我在本地得到了同样的错误。

这是我的config / intializers / validates_timeliness.rb文件的内容:

ValidatesTimeliness.setup do |config|
 # Extend ORM/ODMs for full support (:active_record, :mongoid).
 # config.extend_orms = [ :active_record ]
 #
 # Default timezone
 # config.default_timezone = :utc
 #
 # Set the dummy date part for a time type values.
 # config.dummy_date_for_time_type = [ 2000, 1, 1 ]
 #
 # Ignore errors when restriction options are evaluated
 # config.ignore_restriction_errors = false
 #
 # Re-display invalid values in date/time selects
 # config.enable_date_time_select_extension!
 #
 # Handle multiparameter date/time values strictly
 # config.enable_multiparameter_extension!
 #
 # Shorthand date and time symbols for restrictions
 # config.restriction_shorthand_symbols.update(
 #   :now   => lambda { Time.current },
 #   :today => lambda { Date.current }
 # )
 #
 # Use the plugin date/time parser which is stricter and extendable
 # config.use_plugin_parser = false
 #
 # Add one or more formats making them valid. e.g. add_formats(:date, 'd(st|rd|th) of mmm, yyyy')
 # config.parser.add_formats()
 #
 # Remove one or more formats making them invalid. e.g. remove_formats(:date, 'dd/mm/yyy')
 # config.parser.remove_formats()
 #
 # Change the amiguous year threshold when parsing a 2 digit year
 # config.parser.ambiguous_year_threshold =  30
 #
 # Treat ambiguous dates, such as 01/02/1950, as a Non-US date.
 # config.parser.remove_us_formats
end

这是我的宝石文件的内容:

source 'https://rubygems.org'

gem 'rails', '4.1.8'
gem 'bootstrap-sass', '~> 3.2.0.0'
gem 'sass-rails', '~> 4.0.3'
gem 'uglifier', '>= 1.3.0'
gem 'coffee-rails', '~> 4.0.0'
gem 'jquery-rails'
gem 'turbolinks'
gem 'jbuilder', '~> 2.0'

group :doc do
# bundle exec rake doc:rails generates the API under doc/api.
gem 'sdoc', require: false
end

group :development do
gem 'spring'
gem 'simple_form'
gem 'bcrypt', '~> 3.1.7'  
end

group :development, :test do
gem 'pg'
gem 'rspec-rails', '~> 3.1.0'
gem 'factory_girl_rails'
gem 'validates_timeliness', '~> 3.0'
gem 'validates_overlap'  
end

group :test do
gem 'byebug'
gem 'capybara', '~> 2.4.3'
gem 'shoulda-matchers', '~> 2.7.0'
gem 'faker'
gem 'paper_trail', '~> 3.0.6'
gem 'database_cleaner', '~> 1.3.0'
gem 'launchy', '~> 2.4.2'
gem 'rspec-activemodel-mocks'
gem 'selenium-webdriver', '~> 2.43.0'
end

group :production do
gem 'pg'
gem 'rails_12factor'

我的预感是我可能需要在validates_timeliness设置文件中执行某些操作,但我不知道该怎么做,因为rake失败与" NameError有关。"我很感激有关如何继续的任何建议和指导。

1 个答案:

答案 0 :(得分:2)

在您的Gemfile中,您已在开发组中声明了validates_timeliness gem。

在生产中它没有安装,因此您收到错误。 尝试将validates_timeliness gem移出组,或者,如果您只需要在开发中使用它,请使用以下命令包围初始化程序代码:

if Rails.env.development?
   ValidatesTimeliness.setup do |config|
   end
end