2014-04-01 55 views
1

我是新来的action_mailer,我不知道什么可能会出错。我花了最后的12个小时在这个圈子里。这可能是一个宝石依赖,这可能是我做错了。请帮忙!行动梅勒 - Heroku推

邮件工作在我的本地环境,但我不能推到heroku。我不断收到此错误:

-----> Preparing app for Rails asset pipeline 
    Running: rake assets:precompile 
    rake aborted! 
    NoMethodError: undefined method `action_mailer' for #<Rails::Application: 
:Configuration:0x00000002fad208> 

编辑新的错误之后增加钢轨版本,以创业板FILE

Running: rake assets:precompile 
     I, [2014-04-01T14:00:22.863048 #796] INFO -- : Writing /tmp/build_a1da56 
     f1-c7f3-455c-9bea-c9bf4306ef11/public/assets/blank_tan_vig-03e2648e62e03d21bb6cb 
     8e57937edf8.jpg 
     I, [2014-04-01T14:00:22.865246 #796] INFO -- : Writing /tmp/build_a1da56 
     f1-c7f3-455c-9bea-c9bf4306ef11/public/assets/rails-5c3c576fb6f357c0c4d2a32214da4 
     4b6.png 
     I, [2014-04-01T14:00:27.585107 #796] INFO -- : Writing /tmp/build_a1da56 
     f1-c7f3-455c-9bea-c9bf4306ef11/public/assets/application-bc6a900b1f1dc90eba371ab 
     1e65adb36.js 
     rake aborted! 
     NoMethodError: undefined method `environment' for nil:NilClass 

我试图用山魈我的SMTP服务器。我已经安装并配置好了heroku插件(据我所知)。我也跟着这样的:https://devcenter.heroku.com/articles/mandrill

user_mailer文件:

class UserMailer < ActionMailer::Base 
    default from: "[email protected]" 

    def send_welcome_email(user) 
     @user = user 
    mail(to: @user.email, subject: "Welcome to Myflix!") 
    end 
end 

生产信封

Myflix::Application.configure do 

config.action_mailer.delivery_method = :smtp 
config.action_mailer.smtp_settings = { 
    :address    => 'smtp.mandrillapp.com', 
    :port     => 587, 
    :user_name   => ENV['MANDRILL_USERNAME'], 
    :password    => ENV['MANDRILL_APIKEY'], # SMTP password is any valid API key 
    :domain    => 'heroku.com', # your domain to identify your server when connecting 
    :authentication  => 'plain' # Mandrill supports 'plain' or 'login' 
} 

config.cache_classes = true 
config.eager_load = true 
config.consider_all_requests_local  = false 
config.action_controller.perform_caching = true 

config.serve_static_assets = false 

config.assets.compress = true 
config.assets.js_compressor = :uglifier 

config.assets.compile = false 

config.assets.digest = true 

config.i18n.fallbacks = true 

config.active_support.deprecation = :notify 
end 

的Gemfile:

源 'https://rubygems.org' 红宝石 '1.9.3'

gem 'bootstrap-sass' 
gem 'coffee-rails' 
gem 'rails', '4.0.0' 
gem 'haml-rails' 
gem 'sass-rails' 
gem 'uglifier' 
gem 'jquery-rails' 
gem 'bootstrap_form' 
gem 'bcrypt-ruby', '~> 3.0.0' 
gem 'fabrication' 
gem 'faker' 


group :development do 
    gem 'sqlite3' 
    gem 'pry' 
    gem 'pry-nav' 
    gem 'thin' 
    gem 'better_errors' 
    gem 'binding_of_caller' 
    gem 'letter_opener' 
end 

group :development, :test do 
    gem 'rspec-rails' 
end 

group :test do 
    gem 'shoulda-matchers' 
    gem 'capybara' 
    gem 'launchy' 
end 

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

回答

0

指定您的Gemfile

例如使用,如果您使用的Rails 3.2.13什么版本的Rails的事:

gem 'rails', '3.2.13'

,或者如果您使用Rails的4

gem 'rails', '4.0.0' `

运行bundle install

希望工程。

+0

当我这样做,我得到一个新的错误:没有方法的环境。我用这个新错误更新了这个问题 –

0

这是一个依赖性问题。我在我的gem文件中添加了rails版本,这要归功于@Abednego,当我发现了一个新的错误后,我发现它是sass-rails的依赖问题。新的gemfile如下:

source 'https://rubygems.org' 
ruby '1.9.3' 

gem 'bootstrap-sass' 
gem 'coffee-rails' 
gem 'rails', '4.0.0' 
gem 'haml-rails' 
gem 'sass-rails', "4.0.2" 
gem 'uglifier' 
gem 'jquery-rails' 
gem 'bootstrap_form' 
gem 'bcrypt-ruby', '~> 3.0.0' 
gem 'fabrication' 
gem 'faker' 


group :development do 
    gem 'sqlite3' 
    gem 'pry' 
    gem 'pry-nav' 
    gem 'thin' 
    gem 'better_errors' 
    gem 'binding_of_caller' 
    gem 'letter_opener' 
end 

group :development, :test do 
    gem 'rspec-rails' 
end 

group :test do 
    gem 'shoulda-matchers' 
    gem 'capybara' 
    gem 'launchy' 
end 

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