【发布时间】:2014-07-29 04:51:58
【问题描述】:
我在 rails4 上使用 ruby,并尝试部署到 heroku。但是,当我尝试运行 “heroku run rake db:migrate”,我收到以下错误。
Running `rake db:migrate` attached to terminal... up, run.8591
rake aborted!
TypeError: can't convert nil into String
/app/config/initializers/devise.rb:13:in `+'
/app/config/initializers/devise.rb:13:in `block in <top (required)>'
/app/vendor/bundle/ruby/1.9.1/bundler/gems/devise-66db52ce31b5/lib/devise.rb:292:in `setup'
/app/config/initializers/devise.rb:3:in `<top (required)>'
/app/vendor/bundle/ruby/1.9.1/gems/activesupport- 4.1.4/lib/active_support/dependencies.rb:241:in `load'
/app/vendor/bundle/ruby/1.9.1/gems/activesupport-4.1.4/lib/active_support/dependencies.rb:241:in `block in load'
/app/vendor/bundle/ruby/1.9.1/gems/activesupport-4.1.4/lib/active_support/dependencies.rb:232:in `load_dependency'
/app/vendor/bundle/ruby/1.9.1/gems/activesupport-4.1.4/lib/active_support/dependencies.rb:241:in `load'
/app/vendor/bundle/ruby/1.9.1/gems/railties-4.1.4/lib/rails/engine.rb:648:in `block in load_config_initializer'
/app/vendor/bundle/ruby/1.9.1/gems/activesupport-4.1.4/lib/active_support/notifications.rb:161:in `instrument'
/app/vendor/bundle/ruby/1.9.1/gems/railties-4.1.4/lib/rails/engine.rb:647:in `load_config_initializer'
/app/vendor/bundle/ruby/1.9.1/gems/railties-4.1.4/lib/rails/engine.rb:612:in `block (2 levels) in <class:Engine>'
/app/vendor/bundle/ruby/1.9.1/gems/railties-4.1.4/lib/rails/engine.rb:611:in `each'
/app/vendor/bundle/ruby/1.9.1/gems/railties-4.1.4/lib/rails/engine.rb:611:in `block in <class:Engine>'
/app/vendor/bundle/ruby/1.9.1/gems/railties-4.1.4/lib/rails/initializable.rb:30:in `instance_exec'
/app/vendor/bundle/ruby/1.9.1/gems/railties-4.1.4/lib/rails/initializable.rb:30:in `run'
/app/vendor/bundle/ruby/1.9.1/gems/railties-4.1.4/lib/rails/initializable.rb:55:in `block in run_initializers'
/app/vendor/bundle/ruby/1.9.1/gems/railties-4.1.4/lib/rails/initializable.rb:44:in `each'
/app/vendor/bundle/ruby/1.9.1/gems/railties-4.1.4/lib/rails/initializable.rb:44:in `tsort_each_child'
/app/vendor/bundle/ruby/1.9.1/gems/railties-4.1.4/lib/rails/initializable.rb:54:in `run_initializers'
/app/vendor/bundle/ruby/1.9.1/gems/railties-4.1.4/lib/rails/application.rb:300:in `initialize!'
/app/config/environment.rb:5:in `<top (required)>'
/app/vendor/bundle/ruby/1.9.1/gems/activesupport-4.1.4/lib/active_support/dependencies.rb:247:in `require'
/app/vendor/bundle/ruby/1.9.1/gems/activesupport-4.1.4/lib/active_support/dependencies.rb:247:in `block in require'
/app/vendor/bundle/ruby/1.9.1/gems/activesupport-4.1.4/lib/active_support/dependencies.rb:232:in `load_dependency'
/app/vendor/bundle/ruby/1.9.1/gems/activesupport-4.1.4/lib/active_support/dependencies.rb:247:in `require'
/app/vendor/bundle/ruby/1.9.1/gems/railties-4.1.4/lib/rails/application.rb:276:in `require_environment!'
/app/vendor/bundle/ruby/1.9.1/gems/railties-4.1.4/lib/rails/application.rb:379:in `block in run_tasks_blocks'
Tasks: TOP => db:migrate => environment
(See full trace by running task with --trace)
这是我的 Gemfile
source 'https://rubygems.org'
ruby '1.9.3'
gem 'rails', '4.1.4'
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'
gem 'sdoc', '~> 0.4.0', group: :doc
gem 'spring', group: :development
gem 'bootstrap-sass'
gem 'devise', github: 'plataformatec/devise'
gem 'pundit'
gem 'mail_form'
gem 'simple_form'
group :development do
gem 'better_errors'
gem 'binding_of_caller', :platforms=>[:mri_19]
gem 'quiet_assets'
gem 'rails_layout'
end
group :development, :test do
gem 'factory_girl_rails'
gem 'rspec-rails'
end
group :test do
gem 'capybara'
gem 'database_cleaner'
gem 'faker'
gem 'launchy'
gem 'selenium-webdriver'
end
group :production do
gem 'rails_12factor'
end
gem 'pg'
gem 'validates_formatting_of'
gem 'acts_as_votable', '~> 0.10.0'
gem 'therubyracer', platforms: :ruby
gem "less-rails"
gem 'twitter-bootstrap-rails'
gem 'mini_magick'
gem 'ransack'
gem 'carrierwave'
gem 'jquery-fileupload-rails'
gem 'bundler'
gem 'activeadmin', github: 'gregbell/active_admin'
gem 'haml' # or gem 'slim'
gem 'awesome_nested_set' # or same gem
这是database.yml
default: &default
adapter: postgresql
encoding: unicode
pool: 5
timeout: 5000
development:
<<: *default
database: myapp_development
test:
<<: *default
database: myapp_test
production:
<<: *default
database: myapp_production
这是应用程序.rb
require File.expand_path('../boot', __FILE__)
require 'rails/all'
require 'devise'
# Require the gems listed in Gemfile, including any gems
# you've limited to :test, :development, or :production.
Bundler.require(*Rails.groups)
module Korffice
class Application < Rails::Application
config.generators do |g|
g.test_framework :rspec,
fixtures: true,
view_specs: false,
helper_specs: false,
routing_specs: false,
controller_specs: false,
request_specs: false
g.fixture_replacement :factory_girl, dir: "spec/factories"
end
config.assets.initialize_on_precompile = false
config.serve_static_assets = true
end
end
这是secrets.yml
development:
admin_name: First User
admin_email: user@example.com
admin_password: changeme
email_provider_username: <%= ENV["GMAIL_USERNAME"] %>
email_provider_password: <%= ENV["GMAIL_PASSWORD"] %>
domain_name: example.com
secret_key_base: 98b154040ed274afa3f122e5b3a4f18cac77ac62465b709d94c61e93300bec895ac3b3aa127ad2a8ac5e1a18c894c01c5c61f1f71f0e391dfad6d2b43f781816
test:
domain_name: example.com
secret_key_base: 1a32266f762d172de9f3f9eb52750ee7f8ec8196e77cc940c6eb754ce8ffa4fc93d82682daaad83beba9b2bf25303455a3c149be4092445637de875c6b375489
# Do not keep production secrets in the repository,
# instead read values from the environment.
production:
admin_name: <%= ENV["ADMIN_NAME"] %>
admin_email: <%= ENV["ADMIN_EMAIL"] %>
admin_password: <%= ENV["ADMIN_PASSWORD"] %>
email_provider_username: <%= ENV["GMAIL_USERNAME"] %>
email_provider_password: <%= ENV["GMAIL_PASSWORD"] %>
domain_name: <%= ENV["DOMAIN_NAME"] %>
secret_key_base: <%= ENV["SECRET_KEY_BASE"] %>
这是devise.rb
Devise.setup do |config|
config.mailer_sender = 'no-reply@' + Rails.application.secrets.domain_name
require 'devise/orm/active_record'
config.case_insensitive_keys = [ :email ]
config.strip_whitespace_keys = [ :email ]
config.skip_session_storage = [:http_auth]
config.stretches = Rails.env.test? ? 1 : 10
config.reconfirmable = true
config.password_length = 8..128
config.reset_password_within = 6.hours
config.sign_out_via = :delete
end
请帮忙:(
【问题讨论】:
-
我的猜测是
Rails.application.secrets.domain_name为零...我会看看你应该如何设置它。
标签: ruby-on-rails heroku devise null