Heroku's rake task fails to precompile assets - NameError: uninitialized constant ValidatesTimeliness
Heroku's rake task fails to precompile assets - NameError: uninitialized constant ValidatesTimeliness
当我将 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
这是我的 gem 文件的内容:
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." 我会感谢任何关于我应该如何进行的建议和指导。
在您的 Gemfile 中,您已经在开发组中声明了 validates_timeliness gem。
在正式版中未安装它,因此您遇到了错误。
尝试将 validates_timeliness gem 移出组,或者,如果您只在开发中需要它,请将您的初始化代码包围起来:
if Rails.env.development?
ValidatesTimeliness.setup do |config|
end
end
当我将 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
这是我的 gem 文件的内容:
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." 我会感谢任何关于我应该如何进行的建议和指导。
在您的 Gemfile 中,您已经在开发组中声明了 validates_timeliness gem。
在正式版中未安装它,因此您遇到了错误。 尝试将 validates_timeliness gem 移出组,或者,如果您只在开发中需要它,请将您的初始化代码包围起来:
if Rails.env.development?
ValidatesTimeliness.setup do |config|
end
end