diff --git a/Procfile b/Procfile index f35acf3..cacdbaf 100644 --- a/Procfile +++ b/Procfile @@ -1 +1,2 @@ web: bin/rails server -p $PORT -b 0.0.0.0 +worker: bundle exec sidekiq -C config/sidekiq.yml diff --git a/app/controllers/meals_controller.rb b/app/controllers/meals_controller.rb index 6e6208a..3ec8426 100644 --- a/app/controllers/meals_controller.rb +++ b/app/controllers/meals_controller.rb @@ -35,6 +35,9 @@ def create respond_to do |format| if @meal.save + @user.followers.each do |follower| + UserMailer.notify_new_meal(follower, @user, @meal).deliver_later + end format.html { redirect_to user_meals_path, notice: "Meal was successfully created." } format.json { render :show, status: :created, location: @meal } else diff --git a/app/mailers/user_mailer.rb b/app/mailers/user_mailer.rb new file mode 100644 index 0000000..533f1f9 --- /dev/null +++ b/app/mailers/user_mailer.rb @@ -0,0 +1,8 @@ +class UserMailer < ApplicationMailer + def notify_new_meal(to_user, monitored, meal) + @to_user = to_user + @monitored = monitored + @meal = meal + mail(to: @to_user.email, subject: "#{monitored}さんが食事を撮影しました") + end +end diff --git a/app/views/user_mailer/notify_new_meal.html.erb b/app/views/user_mailer/notify_new_meal.html.erb new file mode 100644 index 0000000..c9111b9 --- /dev/null +++ b/app/views/user_mailer/notify_new_meal.html.erb @@ -0,0 +1,5 @@ +

<%= @monitored.profile.nickname %>さんが食事を撮影しました!

+ +<%= image_tag @meal.img %> + +<%= link_to "コメントする?ここをクリック!", URI.unescape(user_meal_url(user_name: @monitored.username, date: @meal.created_at.strftime("%Y/%m/%d"))) %> \ No newline at end of file diff --git a/config/routes.rb b/config/routes.rb index f75558a..97d4f67 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -12,7 +12,7 @@ devise_for :users - authenticate :user, lambda { |u| u.is_admin? } do + authenticate :user, ->(u) { u.is_admin? } do mount RailsAdmin::Engine => "/admin", as: "rails_admin" mount Sidekiq::Web => "/sidekiq" end diff --git a/config/sidekiq.yml b/config/sidekiq.yml new file mode 100644 index 0000000..ddfb695 --- /dev/null +++ b/config/sidekiq.yml @@ -0,0 +1,6 @@ +:concurrency: 25 +:pidfile: ./tmp/pids/sidekiq.pid +:logfile: ./log/sidekiq.log +:queues: + - default + - mailers diff --git a/spec/jobs/guess_food_job_spec.rb b/spec/jobs/guess_food_job_spec.rb index 62e6681..868155a 100644 --- a/spec/jobs/guess_food_job_spec.rb +++ b/spec/jobs/guess_food_job_spec.rb @@ -1,4 +1,4 @@ -require 'rails_helper' +require "rails_helper" RSpec.describe GuessFoodJob, type: :job do pending "add some examples to (or delete) #{__FILE__}" diff --git a/spec/mailers/previews/user_mailer_preview.rb b/spec/mailers/previews/user_mailer_preview.rb new file mode 100644 index 0000000..38267b0 --- /dev/null +++ b/spec/mailers/previews/user_mailer_preview.rb @@ -0,0 +1,3 @@ +# Preview all emails at http://localhost:3000/rails/mailers/user_mailer +class UserMailerPreview < ActionMailer::Preview +end diff --git a/spec/mailers/user_mailer_spec.rb b/spec/mailers/user_mailer_spec.rb new file mode 100644 index 0000000..4a78b85 --- /dev/null +++ b/spec/mailers/user_mailer_spec.rb @@ -0,0 +1,5 @@ +require "rails_helper" + +RSpec.describe UserMailer, type: :mailer do + pending "add some examples to (or delete) #{__FILE__}" +end