spree_mail_settings icon indicating copy to clipboard operation
spree_mail_settings copied to clipboard

Compatibility with Spree 4.1

Open Jchan241 opened this issue 4 years ago • 11 comments

Need some help here 😕

Getting the error below when trying this gem out with spree 4.1, I've tried removing the dependencies but giving me a "NoMethodError in Spree::Admin::MailMethods#edit" for enable_mail_delivery preference not defined

Bundler could not find compatible versions for gem "spree_auth_devise": In snapshot (Gemfile.lock): spree_auth_devise (= 4.1.0)

In Gemfile: spree_auth_devise (~> 4.1)

spree_mail_settings was resolved to 3.3.0, which depends on
  spree_auth_devise (< 4.0, >= 3.1.0)

Jchan241 avatar Mar 25 '20 23:03 Jchan241

I have the same issue. Added spree_mail_settings to Gemfile:

gem 'spree_mail_settings', github: 'spree-contrib/spree_mail_settings'

bundle update

Bundler could not find compatible versions for gem "spree_auth_devise": In Gemfile: spree_auth_devise (~> 4.1)

spree_mail_settings was resolved to 3.3.0, which depends on
  spree_auth_devise (>= 3.1.0, < 4.0)

xu4wang avatar Apr 04 '20 12:04 xu4wang

Same issue but with Spree 4.0.

Bundler could not find compatible versions for gem "spree_auth_devise":

  In snapshot (Gemfile.lock):
    spree_auth_devise (= 4.1.0)

  In Gemfile:
    spree_auth_devise (~> 4.0)

    spree_mail_settings was resolved to 3.3.0, which depends on
      spree_auth_devise (>= 3.1.0, < 4.0)

mvanio avatar Apr 09 '20 09:04 mvanio

Hi I also experienced the same issue with Spree 4.1. I found out the reason is because the spree_mail_settings has been restricted to versions between '3.1' and '4.0'. You can find this info under the gemspec file at the root: spree_mail_settings.gemspec Check line 25: spree_version = '>= 3.1.0', '< 4.0'

To test, i forked the spree_mail_settings, pointed the gem version in gemfile to the one i have forked in github. Then i changed the gemspec file to spree_version = '>= 3.1.0', '<= 4.1' and the bundle update worked. But i now have an issue with the decorator for preferences not being found, so when i open the link to the Mail Settings under admin, it throws an error NoMethodError in Spree::Admin::MailMethods#edit

Why are the decorators not being found ? Any way around it

leonmuchoki avatar Apr 13 '20 09:04 leonmuchoki

The case for decorators not being loaded and hence preferences defined under app/model/spree/app_configuration_decorator.rb not being found error....

a small work around as we wait for an updated spree_mail_settings gem, under the fork you created, you can add an initializer folder and add the preferences configuration file there with the preferences specified under models/spree/app_configuration_decorator.rb. This will ensure the added spree_mail_settings preferences are loaded

leonmuchoki avatar Apr 13 '20 14:04 leonmuchoki

The case for decorators not being loaded and hence preferences defined under app/model/spree/app_configuration_decorator.rb not being found error....

a small work around as we wait for an updated spree_mail_settings gem, under the fork you created, you can add an initializer folder and add the preferences configuration file there with the preferences specified under models/spree/app_configuration_decorator.rb. This will ensure the added spree_mail_settings preferences are loaded

Thanks, worked like a charm ✌️

Jchan241 avatar Apr 15 '20 02:04 Jchan241

Still getting the same error referenced at the start of this issue. Fixed by using the link above and cloning the gem file into my vendor folder. Edited the line

#spree_mail_settings.gemspec
spree_version = '>= 3.1.0', '<= 4.2'
# gemfile.rb
gem 'spree_mail_settings', :path => 'vendor/spree_mail_settings'

Ran bundle, restarted server and no issues

weefunker avatar Jun 25 '20 17:06 weefunker

@leonmuchoki and @weefunker do you guys have recommendations on how to successfully push this to heroku? The views load in development, but no emails received, then when I attempt to push to production I get

remote: -----> Installing dependencies using bundler 2.0.2
remote:        Running: bundle install --without development:test --path vendor/bundle --binstubs vendor/bundle/bin -j4
remote:        The path `/tmp/build_e65e8575/vendor/spree_mail_settings` does not exist.
remote:        Bundler Output: The path `/tmp/build_e65e8575/vendor/spree_mail_settings` does not exist.

Thanks in advance guys

kykyi avatar Jul 15 '20 09:07 kykyi

@bashford7 I ended up just using typical rails app mail settings instead. This plugin is completely unnecessary unless you need to allow some nontechie to change the SMTP settings from the dashboard.

#production.rb 
 config.action_mailer.delivery_method = :smtp
  config.action_mailer.smtp_settings = {
      :address              => 'smtp.gmail.com',
      :port                 => 587,
      :domain               => 'gmail.com',
      :user_name            => '[email protected]',
      :password             => 'pass',
      :authentication       => 'login',
      :enable_starttls_auto => true
  }

weefunker avatar Jul 15 '20 15:07 weefunker

Thanks @weefunker works a treat now! Adapted your answer to work on SendGrid:

config.action_mailer.raise_delivery_errors = true
  config.action_mailer.delivery_method = :smtp
  host = 'voyage-fromage-60583.herokuapp.com'
  config.action_mailer.default_url_options = { host: host }
  ActionMailer::Base.smtp_settings = {
   :address        => 'smtp.sendgrid.net',
   :port           => '587',
   :authentication => :plain,
   :user_name      => ENV['SENDGRID_USERNAME'],
   :password       => ENV['SENDGRID_PASSWORD'],
   :domain         => 'heroku.com',
   :enable_starttls_auto => true
  }

kykyi avatar Jul 16 '20 14:07 kykyi

@bashford7 I ended up just using typical rails app mail settings instead. This plugin is completely unnecessary unless you need to allow some nontechie to change the SMTP settings from the dashboard.

#production.rb 
 config.action_mailer.delivery_method = :smtp
  config.action_mailer.smtp_settings = {
      :address              => 'smtp.gmail.com',
      :port                 => 587,
      :domain               => 'gmail.com',
      :user_name            => '[email protected]',
      :password             => 'pass',
      :authentication       => 'login',
      :enable_starttls_auto => true
  }

Thanks I was wondering if this was necessary

staycreativedesign avatar Nov 30 '20 22:11 staycreativedesign

Also this works.

https://hixonrails.com/ruby-on-rails-tutorials/ruby-on-rails-action-mailer-configuration/

ufukayyildiz avatar Dec 20 '20 02:12 ufukayyildiz