diff --git a/.codeclimate.yml b/.codeclimate.yml index b4ee78655..0495bd450 100644 --- a/.codeclimate.yml +++ b/.codeclimate.yml @@ -27,6 +27,6 @@ exclude_patterns: - "*.gemspec" - "Appraisals" - "gemfiles/" - - "rails_example/" + - "my_app/" - "redis/" - "tmp/" diff --git a/.gitignore b/.gitignore index 142d87979..a71af0a24 100644 --- a/.gitignore +++ b/.gitignore @@ -13,5 +13,5 @@ coverage/ Gemfile.lock gemfiles/*.lock -rails_example/spec/examples.txt +my_app/spec/examples.txt tmp/ diff --git a/.reek.yml b/.reek.yml index f136fb4c2..8ca3b6980 100644 --- a/.reek.yml +++ b/.reek.yml @@ -1,6 +1,6 @@ --- exclude_paths: - - rails_example + - my_app - redis - spec - tmp diff --git a/.rubocop.yml b/.rubocop.yml index 49105039e..9bfa582f6 100644 --- a/.rubocop.yml +++ b/.rubocop.yml @@ -111,7 +111,7 @@ Style/Documentation: Enabled: true Exclude: - "examples/**/*.rb" - - "rails_example/**/*.rb" + - "my_app/**/*.rb" - "bin/**/*.rb" - "lib/sidekiq_unique_jobs/testing.rb" - "lib/sidekiq_unique_jobs/core_ext.rb" diff --git a/README.md b/README.md index 6aaddfa55..6bf6239c2 100644 --- a/README.md +++ b/README.md @@ -216,7 +216,7 @@ With this lock type it is possible to put any number of these jobs on the queue, sidekiq_options lock: :while_executing, lock_timeout: nil ``` -There is an example of this to try it out in the `rails_example` application. Run `foreman start` in the root of the directory and open the url: `localhost:5000/work/duplicate_while_executing`. +There is an example of this to try it out in the `my_app` application. Run `foreman start` in the root of the directory and open the url: `localhost:5000/work/duplicate_while_executing`. In the console you should see something like: diff --git a/rails_example/.env b/my_app/.env similarity index 85% rename from rails_example/.env rename to my_app/.env index 3ae005a73..d086b4dca 100644 --- a/rails_example/.env +++ b/my_app/.env @@ -1,12 +1,13 @@ -SECRET_KEY_BASE=10167c7f7654ed02b3557b05b88ece1866a9748a2e8e064016f76cb74ddae38264f7403ba65f301d63c21d770e0ee2ac6906f245e904b3b140d12297f67e0db1 APP_DOMAIN=localhost APP_WEB_URL=http://localhost:3000 APP_CABLE_URL=ws://localhost:28080 -WEB_CONSOLE_WHITELISTED_IPS=127.0.0.1 ::1 127.0.0.0/8 ::1 DB_HOST=localhost DB_PORT=5432 -DB_USERNAME=mhenrixon +DB_USERNAME=mikaelhenriksson DB_PASSWORD= DB_POOL=25 DB_TIMEOUT=5000 DB_REAPING_FREQUENCY=10 +REDIS_URL=redis://localhost:6379/7 +SECRET_KEY_BASE=10167c7f7654ed02b3557b05b88ece1866a9748a2e8e064016f76cb74ddae38264f7403ba65f301d63c21d770e0ee2ac6906f245e904b3b140d12297f67e0db1 +WEB_CONSOLE_WHITELISTED_IPS=127.0.0.1 ::1 127.0.0.0/8 ::1 diff --git a/rails_example/.env.test b/my_app/.env.test similarity index 100% rename from rails_example/.env.test rename to my_app/.env.test diff --git a/rails_example/.gitignore b/my_app/.gitignore similarity index 100% rename from rails_example/.gitignore rename to my_app/.gitignore diff --git a/rails_example/.rspec b/my_app/.rspec similarity index 100% rename from rails_example/.rspec rename to my_app/.rspec diff --git a/rails_example/.rubocop.yml b/my_app/.rubocop.yml similarity index 100% rename from rails_example/.rubocop.yml rename to my_app/.rubocop.yml diff --git a/rails_example/Gemfile b/my_app/Gemfile similarity index 100% rename from rails_example/Gemfile rename to my_app/Gemfile diff --git a/rails_example/Procfile b/my_app/Procfile similarity index 100% rename from rails_example/Procfile rename to my_app/Procfile diff --git a/rails_example/Rakefile b/my_app/Rakefile similarity index 100% rename from rails_example/Rakefile rename to my_app/Rakefile diff --git a/rails_example/app/assets/images/.keep b/my_app/app/assets/images/.keep similarity index 100% rename from rails_example/app/assets/images/.keep rename to my_app/app/assets/images/.keep diff --git a/rails_example/app/assets/javascripts/application.js b/my_app/app/assets/javascripts/application.js similarity index 100% rename from rails_example/app/assets/javascripts/application.js rename to my_app/app/assets/javascripts/application.js diff --git a/rails_example/app/assets/stylesheets/application.css b/my_app/app/assets/stylesheets/application.css similarity index 100% rename from rails_example/app/assets/stylesheets/application.css rename to my_app/app/assets/stylesheets/application.css diff --git a/rails_example/app/controllers/application_controller.rb b/my_app/app/controllers/application_controller.rb similarity index 100% rename from rails_example/app/controllers/application_controller.rb rename to my_app/app/controllers/application_controller.rb diff --git a/rails_example/app/controllers/concerns/.keep b/my_app/app/controllers/concerns/.keep similarity index 100% rename from rails_example/app/controllers/concerns/.keep rename to my_app/app/controllers/concerns/.keep diff --git a/my_app/app/controllers/issues_controller.rb b/my_app/app/controllers/issues_controller.rb new file mode 100644 index 000000000..10543cf9a --- /dev/null +++ b/my_app/app/controllers/issues_controller.rb @@ -0,0 +1,33 @@ +# frozen_string_literal: true + +class IssuesController < ApplicationController + def index + render :index + end + + def show + number_to_perform.times do + if worker_args.present? + worker_class.perform_async(worker_args) + else + worker_class.perform_async + end + end + + redirect_to '/sidekiq' + end + + private + + def worker_class + @worker_class ||= "Issue#{params.permit(:id)}".constantize + end + + def worker_args + params.permit(:args) || nil + end + + def number_to_perform + params.permit(:times) || 4 + end +end diff --git a/rails_example/app/helpers/application_helper.rb b/my_app/app/helpers/application_helper.rb similarity index 100% rename from rails_example/app/helpers/application_helper.rb rename to my_app/app/helpers/application_helper.rb diff --git a/rails_example/app/mailers/.keep b/my_app/app/mailers/.keep similarity index 100% rename from rails_example/app/mailers/.keep rename to my_app/app/mailers/.keep diff --git a/rails_example/app/models/.keep b/my_app/app/models/.keep similarity index 100% rename from rails_example/app/models/.keep rename to my_app/app/models/.keep diff --git a/rails_example/app/models/application_record.rb b/my_app/app/models/application_record.rb similarity index 100% rename from rails_example/app/models/application_record.rb rename to my_app/app/models/application_record.rb diff --git a/rails_example/app/models/concerns/.keep b/my_app/app/models/concerns/.keep similarity index 100% rename from rails_example/app/models/concerns/.keep rename to my_app/app/models/concerns/.keep diff --git a/rails_example/app/models/guest.rb b/my_app/app/models/guest.rb similarity index 100% rename from rails_example/app/models/guest.rb rename to my_app/app/models/guest.rb diff --git a/rails_example/app/models/post.rb b/my_app/app/models/post.rb similarity index 100% rename from rails_example/app/models/post.rb rename to my_app/app/models/post.rb diff --git a/rails_example/app/views/work/index.html.slim b/my_app/app/views/issues/index.html.slim similarity index 100% rename from rails_example/app/views/work/index.html.slim rename to my_app/app/views/issues/index.html.slim diff --git a/my_app/app/views/layouts/application.html.slim b/my_app/app/views/layouts/application.html.slim new file mode 100644 index 000000000..6e5ebd050 --- /dev/null +++ b/my_app/app/views/layouts/application.html.slim @@ -0,0 +1,13 @@ +doctype html +html + head + title MyApp + / = stylesheet_link_tag 'application', media: 'all' + / = javascript_include_tag 'application' + = csrf_meta_tags + body + ul#top-menu + li.menu-item + = link_to 'Issue 384', issue_384_path + + = yield diff --git a/my_app/app/workers/issue_384_worker.rb b/my_app/app/workers/issue_384_worker.rb new file mode 100644 index 000000000..f407a409f --- /dev/null +++ b/my_app/app/workers/issue_384_worker.rb @@ -0,0 +1,13 @@ +class Issue384Worker + include Sidekiq::Worker + + sidekiq_options lock: :while_executing, + lock_timeout: nil, + on_conflict: :reschedule + + def perform + puts 'hello' + sleep 1 + puts 'bye' + end +end diff --git a/rails_example/bin/bundle b/my_app/bin/bundle similarity index 100% rename from rails_example/bin/bundle rename to my_app/bin/bundle diff --git a/rails_example/bin/check_or_setup_db b/my_app/bin/check_or_setup_db similarity index 100% rename from rails_example/bin/check_or_setup_db rename to my_app/bin/check_or_setup_db diff --git a/rails_example/bin/docker-setup b/my_app/bin/docker-setup similarity index 100% rename from rails_example/bin/docker-setup rename to my_app/bin/docker-setup diff --git a/rails_example/bin/rails b/my_app/bin/rails similarity index 100% rename from rails_example/bin/rails rename to my_app/bin/rails diff --git a/rails_example/bin/rake b/my_app/bin/rake similarity index 100% rename from rails_example/bin/rake rename to my_app/bin/rake diff --git a/rails_example/bin/setup b/my_app/bin/setup similarity index 100% rename from rails_example/bin/setup rename to my_app/bin/setup diff --git a/rails_example/bin/update b/my_app/bin/update similarity index 100% rename from rails_example/bin/update rename to my_app/bin/update diff --git a/rails_example/cable.ru b/my_app/cable.ru similarity index 100% rename from rails_example/cable.ru rename to my_app/cable.ru diff --git a/rails_example/config.ru b/my_app/config.ru similarity index 100% rename from rails_example/config.ru rename to my_app/config.ru diff --git a/rails_example/config/application.rb b/my_app/config/application.rb similarity index 87% rename from rails_example/config/application.rb rename to my_app/config/application.rb index 7c52ed113..08a03acf9 100644 --- a/rails_example/config/application.rb +++ b/my_app/config/application.rb @@ -10,10 +10,10 @@ # you've limited to :test, :development, or :production. Bundler.require(*Rails.groups) -module RailsExample +module MyApp class Application < Rails::Application # Settings in config/environments/* take precedence over those specified here. - # Application configuration should go into files in config/initializers + # Applicationconfiguration should go into files in config/initializers # -- all .rb files in that directory are automatically loaded. # Set Time.zone default to the specified zone and make Active Record auto-convert to this zone. @@ -25,5 +25,6 @@ class Application < Rails::Application # config.i18n.default_locale = :de # config.active_record.schema_format = :sql + config.autoload_paths += %w[app/workers] end end diff --git a/rails_example/config/boot.rb b/my_app/config/boot.rb similarity index 100% rename from rails_example/config/boot.rb rename to my_app/config/boot.rb diff --git a/rails_example/config/cable.yml b/my_app/config/cable.yml similarity index 100% rename from rails_example/config/cable.yml rename to my_app/config/cable.yml diff --git a/rails_example/config/credentials.yml.enc b/my_app/config/credentials.yml.enc similarity index 100% rename from rails_example/config/credentials.yml.enc rename to my_app/config/credentials.yml.enc diff --git a/rails_example/config/database.yml b/my_app/config/database.yml similarity index 66% rename from rails_example/config/database.yml rename to my_app/config/database.yml index e6a8ae5f6..a56d1d765 100644 --- a/rails_example/config/database.yml +++ b/my_app/config/database.yml @@ -3,18 +3,18 @@ defaults: &defaults adapter: postgresql host: <%= ENV.fetch('DB_HOST') { 'localhost' } %> port: <%= ENV.fetch('DB_PORT') { 5432 } %> - username: <%= ENV.fetch('DB_USERNAME') { `whoami` } %> + username: <%= ENV.fetch('DB_USERNAME') { system("whoami") } %> password: <%= ENV.fetch('DB_PASSWORD') { nil } %> development: <<: *defaults - database: rails_example_dev + database: my_app_dev test: <<: *defaults - database: rails_example_test + database: my_app_test production: <<: *defaults - database: rails_example_prod + database: my_app_prod diff --git a/rails_example/config/environment.rb b/my_app/config/environment.rb similarity index 100% rename from rails_example/config/environment.rb rename to my_app/config/environment.rb diff --git a/rails_example/config/environments/development.rb b/my_app/config/environments/development.rb similarity index 100% rename from rails_example/config/environments/development.rb rename to my_app/config/environments/development.rb diff --git a/rails_example/config/environments/production.rb b/my_app/config/environments/production.rb similarity index 98% rename from rails_example/config/environments/production.rb rename to my_app/config/environments/production.rb index c87c226a4..619ea6ce7 100644 --- a/rails_example/config/environments/production.rb +++ b/my_app/config/environments/production.rb @@ -56,7 +56,7 @@ # Use a real queuing backend for Active Job (and separate queues per environment) # config.active_job.queue_adapter = :resque - # config.active_job.queue_name_prefix = "rails_example_#{Rails.env}" + # config.active_job.queue_name_prefix = "my_app_#{Rails.env}" config.action_mailer.perform_caching = false # Ignore bad email addresses and do not raise email delivery errors. diff --git a/rails_example/config/environments/test.rb b/my_app/config/environments/test.rb similarity index 100% rename from rails_example/config/environments/test.rb rename to my_app/config/environments/test.rb diff --git a/rails_example/config/initializers/application_controller_renderer.rb b/my_app/config/initializers/application_controller_renderer.rb similarity index 100% rename from rails_example/config/initializers/application_controller_renderer.rb rename to my_app/config/initializers/application_controller_renderer.rb diff --git a/rails_example/config/initializers/assets.rb b/my_app/config/initializers/assets.rb similarity index 100% rename from rails_example/config/initializers/assets.rb rename to my_app/config/initializers/assets.rb diff --git a/rails_example/config/initializers/backtrace_silencers.rb b/my_app/config/initializers/backtrace_silencers.rb similarity index 100% rename from rails_example/config/initializers/backtrace_silencers.rb rename to my_app/config/initializers/backtrace_silencers.rb diff --git a/rails_example/config/initializers/cookies_serializer.rb b/my_app/config/initializers/cookies_serializer.rb similarity index 100% rename from rails_example/config/initializers/cookies_serializer.rb rename to my_app/config/initializers/cookies_serializer.rb diff --git a/rails_example/config/initializers/filter_parameter_logging.rb b/my_app/config/initializers/filter_parameter_logging.rb similarity index 100% rename from rails_example/config/initializers/filter_parameter_logging.rb rename to my_app/config/initializers/filter_parameter_logging.rb diff --git a/rails_example/config/initializers/inflections.rb b/my_app/config/initializers/inflections.rb similarity index 100% rename from rails_example/config/initializers/inflections.rb rename to my_app/config/initializers/inflections.rb diff --git a/rails_example/config/initializers/mime_types.rb b/my_app/config/initializers/mime_types.rb similarity index 100% rename from rails_example/config/initializers/mime_types.rb rename to my_app/config/initializers/mime_types.rb diff --git a/rails_example/config/initializers/new_framework_defaults.rb b/my_app/config/initializers/new_framework_defaults.rb similarity index 100% rename from rails_example/config/initializers/new_framework_defaults.rb rename to my_app/config/initializers/new_framework_defaults.rb diff --git a/rails_example/config/initializers/session_store.rb b/my_app/config/initializers/session_store.rb similarity index 52% rename from rails_example/config/initializers/session_store.rb rename to my_app/config/initializers/session_store.rb index 9d2c453d5..ec8d2139f 100644 --- a/rails_example/config/initializers/session_store.rb +++ b/my_app/config/initializers/session_store.rb @@ -2,4 +2,4 @@ # Be sure to restart your server when you modify this file. -Rails.application.config.session_store :cookie_store, key: '_rails_example_session' +Rails.application.config.session_store :cookie_store, key: '_my_app_session' diff --git a/rails_example/config/initializers/sidekiq.rb b/my_app/config/initializers/sidekiq.rb similarity index 88% rename from rails_example/config/initializers/sidekiq.rb rename to my_app/config/initializers/sidekiq.rb index 52e517c21..7795d245e 100644 --- a/rails_example/config/initializers/sidekiq.rb +++ b/my_app/config/initializers/sidekiq.rb @@ -33,4 +33,6 @@ end Sidekiq.log_format = :json if Sidekiq.respond_to?(:log_format) -SidekiqUniqueJobs.logger.level = Object.const_get("Logger::#{ENV.fetch('LOGLEVEL') { 'debug' }.upcase}") +SidekiqUniqueJobs.logger.level = Logger::DEBUG + +Dir[Rails.root.join("app", "workers", "**", "*.rb")].each { |worker| require worker } diff --git a/rails_example/config/initializers/wrap_parameters.rb b/my_app/config/initializers/wrap_parameters.rb similarity index 100% rename from rails_example/config/initializers/wrap_parameters.rb rename to my_app/config/initializers/wrap_parameters.rb diff --git a/rails_example/config/locales/en.yml b/my_app/config/locales/en.yml similarity index 100% rename from rails_example/config/locales/en.yml rename to my_app/config/locales/en.yml diff --git a/rails_example/config/puma.rb b/my_app/config/puma.rb similarity index 83% rename from rails_example/config/puma.rb rename to my_app/config/puma.rb index 9d44b83cc..9bf4ed711 100644 --- a/rails_example/config/puma.rb +++ b/my_app/config/puma.rb @@ -8,12 +8,12 @@ # Store the pid of the server in the file at "path". # -# pidfile '/u/apps/lolcat/tmp/pids/puma.pid' +pidfile 'tmp/pids/puma.pid' # Use "path" as the file to store the server info state. This is # used by "pumactl" to query and control the server. # -# state_path '/u/apps/lolcat/tmp/pids/puma.state' +state_path 'tmp/pids/puma.state' # Use the `preload_app!` method when specifying a `workers` number. # This directive tells Puma to first boot the application and load code @@ -22,8 +22,8 @@ # you need to make sure to reconnect any threads in the `on_worker_boot` # block. # -# workers ENV.fetch("WEB_CONCURRENCY") { 2 } -# preload_app! +workers ENV.fetch("WEB_CONCURRENCY") { 2 } +preload_app! # The code in the `on_worker_boot` will be called if you are using # clustered mode by specifying a number of `workers`. After each worker @@ -32,9 +32,9 @@ # or connections that may have been created at application boot, Ruby # cannot share connections between processes. # -# on_worker_boot do -# ActiveRecord::Base.establish_connection if defined?(ActiveRecord) -# end +on_worker_boot do + ActiveRecord::Base.establish_connection if defined?(ActiveRecord) +end # Allow puma to be restarted by `rails restart` command. plugin :tmp_restart diff --git a/my_app/config/routes.rb b/my_app/config/routes.rb new file mode 100644 index 000000000..5370b444c --- /dev/null +++ b/my_app/config/routes.rb @@ -0,0 +1,9 @@ +# frozen_string_literal: true + +Rails.application.routes.draw do + require 'sidekiq_unique_jobs/web' + require 'sidekiq-status/web' + mount Sidekiq::Web, at: '/sidekiq' + + get 'issues/:id' => 'issues#show' +end diff --git a/rails_example/config/schedule.yml b/my_app/config/schedule.yml similarity index 74% rename from rails_example/config/schedule.yml rename to my_app/config/schedule.yml index e50c88e26..9bbaadfcb 100644 --- a/rails_example/config/schedule.yml +++ b/my_app/config/schedule.yml @@ -2,5 +2,5 @@ my_first_job: cron: "*/2 * * * *" - class: "HardWorker" + class: "Issue384Worker" queue: default diff --git a/rails_example/config/secrets.yml b/my_app/config/secrets.yml similarity index 100% rename from rails_example/config/secrets.yml rename to my_app/config/secrets.yml diff --git a/rails_example/config/sidekiq.yml b/my_app/config/sidekiq.yml similarity index 100% rename from rails_example/config/sidekiq.yml rename to my_app/config/sidekiq.yml diff --git a/rails_example/config/spring.rb b/my_app/config/spring.rb similarity index 100% rename from rails_example/config/spring.rb rename to my_app/config/spring.rb diff --git a/rails_example/db/migrate/20160724111322_create_posts.rb b/my_app/db/migrate/20160724111322_create_posts.rb similarity index 100% rename from rails_example/db/migrate/20160724111322_create_posts.rb rename to my_app/db/migrate/20160724111322_create_posts.rb diff --git a/rails_example/db/schema.rb b/my_app/db/schema.rb similarity index 100% rename from rails_example/db/schema.rb rename to my_app/db/schema.rb diff --git a/rails_example/db/seeds.rb b/my_app/db/seeds.rb similarity index 100% rename from rails_example/db/seeds.rb rename to my_app/db/seeds.rb diff --git a/rails_example/dev-entrypoint.sh b/my_app/dev-entrypoint.sh similarity index 100% rename from rails_example/dev-entrypoint.sh rename to my_app/dev-entrypoint.sh diff --git a/rails_example/dev.env b/my_app/dev.env similarity index 100% rename from rails_example/dev.env rename to my_app/dev.env diff --git a/rails_example/docker/rails.Dockerfile b/my_app/docker/rails.Dockerfile similarity index 100% rename from rails_example/docker/rails.Dockerfile rename to my_app/docker/rails.Dockerfile diff --git a/rails_example/lib/assets/.keep b/my_app/lib/assets/.keep similarity index 100% rename from rails_example/lib/assets/.keep rename to my_app/lib/assets/.keep diff --git a/rails_example/lib/tasks/.keep b/my_app/lib/tasks/.keep similarity index 100% rename from rails_example/lib/tasks/.keep rename to my_app/lib/tasks/.keep diff --git a/rails_example/log/.keep b/my_app/log/.keep similarity index 100% rename from rails_example/log/.keep rename to my_app/log/.keep diff --git a/rails_example/public/404.html b/my_app/public/404.html similarity index 100% rename from rails_example/public/404.html rename to my_app/public/404.html diff --git a/rails_example/public/422.html b/my_app/public/422.html similarity index 100% rename from rails_example/public/422.html rename to my_app/public/422.html diff --git a/rails_example/public/500.html b/my_app/public/500.html similarity index 100% rename from rails_example/public/500.html rename to my_app/public/500.html diff --git a/rails_example/public/favicon.ico b/my_app/public/favicon.ico similarity index 100% rename from rails_example/public/favicon.ico rename to my_app/public/favicon.ico diff --git a/rails_example/public/robots.txt b/my_app/public/robots.txt similarity index 100% rename from rails_example/public/robots.txt rename to my_app/public/robots.txt diff --git a/rails_example/simple.ru b/my_app/simple.ru similarity index 100% rename from rails_example/simple.ru rename to my_app/simple.ru diff --git a/rails_example/spec/factories/posts.rb b/my_app/spec/factories/posts.rb similarity index 100% rename from rails_example/spec/factories/posts.rb rename to my_app/spec/factories/posts.rb diff --git a/rails_example/spec/models/post_spec.rb b/my_app/spec/models/post_spec.rb similarity index 100% rename from rails_example/spec/models/post_spec.rb rename to my_app/spec/models/post_spec.rb diff --git a/rails_example/spec/rails_helper.rb b/my_app/spec/rails_helper.rb similarity index 100% rename from rails_example/spec/rails_helper.rb rename to my_app/spec/rails_helper.rb diff --git a/rails_example/spec/spec_helper.rb b/my_app/spec/spec_helper.rb similarity index 100% rename from rails_example/spec/spec_helper.rb rename to my_app/spec/spec_helper.rb diff --git a/rails_example/vendor/assets/javascripts/.keep b/my_app/vendor/assets/javascripts/.keep similarity index 100% rename from rails_example/vendor/assets/javascripts/.keep rename to my_app/vendor/assets/javascripts/.keep diff --git a/rails_example/vendor/assets/stylesheets/.keep b/my_app/vendor/assets/stylesheets/.keep similarity index 100% rename from rails_example/vendor/assets/stylesheets/.keep rename to my_app/vendor/assets/stylesheets/.keep diff --git a/rails_example/app/channels/appearance_channel.rb b/rails_example/app/channels/appearance_channel.rb deleted file mode 100644 index 4e85d1316..000000000 --- a/rails_example/app/channels/appearance_channel.rb +++ /dev/null @@ -1,17 +0,0 @@ -# frozen_string_literal: true - -class AppearanceChannel < ApplicationCable::Channel - def subscribed - current_user.appear - end - - def unsubscribed - current_user.disappear - end - - def appear(data) - current_user.appear on: data['appearing_on'] - end - - delegate :away, to: :current_user -end diff --git a/rails_example/app/channels/application_cable/channel.rb b/rails_example/app/channels/application_cable/channel.rb deleted file mode 100644 index 9aec23053..000000000 --- a/rails_example/app/channels/application_cable/channel.rb +++ /dev/null @@ -1,6 +0,0 @@ -# frozen_string_literal: true - -module ApplicationCable - class Channel < ActionCable::Channel::Base - end -end diff --git a/rails_example/app/channels/application_cable/connection.rb b/rails_example/app/channels/application_cable/connection.rb deleted file mode 100644 index f1701dd22..000000000 --- a/rails_example/app/channels/application_cable/connection.rb +++ /dev/null @@ -1,11 +0,0 @@ -# frozen_string_literal: true - -module ApplicationCable - class Connection < ActionCable::Connection::Base - identified_by :current_user - - def connect - self.current_user = Guest.new - end - end -end diff --git a/rails_example/app/channels/post_channel.rb b/rails_example/app/channels/post_channel.rb deleted file mode 100644 index fa901fe84..000000000 --- a/rails_example/app/channels/post_channel.rb +++ /dev/null @@ -1,7 +0,0 @@ -# frozen_string_literal: true - -class PostChannel < ApplicationCable::Channel - def subscribed - stream_from "post_#{params[:post_id]}" - end -end diff --git a/rails_example/app/controllers/work_controller.rb b/rails_example/app/controllers/work_controller.rb deleted file mode 100644 index 1a3f0a8f5..000000000 --- a/rails_example/app/controllers/work_controller.rb +++ /dev/null @@ -1,59 +0,0 @@ -# frozen_string_literal: true - -class WorkController < ApplicationController - def index - render :index - end - - def duplicate_simple - 4.times { SimpleWorker.perform_async(unique_argument) } - - redirect_to '/sidekiq' - end - - def duplicate_slow - 4.times { SlowUntilExecutingWorker.perform_async(unique_argument) } - - redirect_to '/sidekiq' - end - - def duplicate_nested - 4.times { SpawnSimpleWorker.perform_async(unique_argument) } - - redirect_to '/sidekiq' - end - - def duplicate_without_args - 4.times { WithoutArgsWorker.perform_async } - - redirect_to '/sidekiq' - end - - def duplicate_with_args - 4.times { WithoutArgsWorker.perform_async 1 } - - redirect_to '/sidekiq' - end - - def duplicate_while_executing - params[:attempts].to_i.times { WhileExecutingWorker.perform_async(params[:sleepy_time]) } - - redirect_to '/sidekiq' - end - - def duplicate_while_executing_with_timeout - 4.times { WhileExecutingWithTimeoutWorker.perform_async(1, 2) } - - redirect_to '/sidekiq' - end - - private - - def unique_argument - params[:id] - end - - def safe_params - params.permit!(:id) - end -end diff --git a/rails_example/app/views/layouts/application.html.slim b/rails_example/app/views/layouts/application.html.slim deleted file mode 100644 index 8feca530b..000000000 --- a/rails_example/app/views/layouts/application.html.slim +++ /dev/null @@ -1,25 +0,0 @@ -doctype html -html - head - title RailsExample - / = stylesheet_link_tag 'application', media: 'all' - / = javascript_include_tag 'application' - = csrf_meta_tags - body - ul#top-menu - li.menu-item - = link_to 'Duplicate Simple', work_duplicate_simple_path - li.menu-item - = link_to 'Duplicate Slow', work_duplicate_slow_path - li.menu-item - = link_to 'Duplicate Nested', work_duplicate_nested_path - li.menu-item - = link_to 'Duplicate WithoutArgs', work_duplicate_without_args_path - li.menu-item - = link_to 'Duplicate WithArgs', work_duplicate_with_args_path - li.menu-item - = link_to 'Duplicate WhileExecuting', work_duplicate_while_executing_path - li.menu-item - = link_to 'Duplicate WhileExecutingWithTimeout', work_duplicate_while_executing_with_timeout_path - - = yield diff --git a/rails_example/app/workers/hard_worker.rb b/rails_example/app/workers/hard_worker.rb deleted file mode 100644 index e37d31e2b..000000000 --- a/rails_example/app/workers/hard_worker.rb +++ /dev/null @@ -1,15 +0,0 @@ -# frozen_string_literal: true - -class HardWorker - include Sidekiq::Worker - include Sidekiq::Status::Worker - sidekiq_options lock: :until_executed, - queue: :default - - def perform - SidekiqUniqueJobs.with_context(self.class.name) do - SidekiqUniqueJobs.logger.debug { "#{__method__}" } - end - sleep 1 - end -end diff --git a/rails_example/app/workers/sequence_action_worker.rb b/rails_example/app/workers/sequence_action_worker.rb deleted file mode 100644 index af1bf19a0..000000000 --- a/rails_example/app/workers/sequence_action_worker.rb +++ /dev/null @@ -1,11 +0,0 @@ -class SequenceActionWorker - include Sidekiq::Worker - include Sidekiq::Status::Worker - - sidekiq_options lock: :until_and_while_executing - - def perform(id) - sleep 1.minute - p id - end -end diff --git a/rails_example/app/workers/simple_worker.rb b/rails_example/app/workers/simple_worker.rb deleted file mode 100644 index 31de250f7..000000000 --- a/rails_example/app/workers/simple_worker.rb +++ /dev/null @@ -1,18 +0,0 @@ -# frozen_string_literal: true - -class SimpleWorker - include Sidekiq::Worker - include Sidekiq::Status::Worker - sidekiq_options lock: :until_executed, - queue: :default, - unique_args: (lambda do |args| - [args.first] - end) - - def perform(some_args) - SidekiqUniqueJobs.with_context(self.class.name) do - SidekiqUniqueJobs.logger.debug { "#{__method__}(#{some_args})" } - end - sleep 1 - end -end diff --git a/rails_example/app/workers/slow_until_executing_worker.rb b/rails_example/app/workers/slow_until_executing_worker.rb deleted file mode 100644 index 75085d9ed..000000000 --- a/rails_example/app/workers/slow_until_executing_worker.rb +++ /dev/null @@ -1,18 +0,0 @@ -# frozen_string_literal: true - -class SlowUntilExecutingWorker - include Sidekiq::Worker - include Sidekiq::Status::Worker - sidekiq_options lock: :until_executing, - queue: :default, - unique_args: (lambda do |args| - [args.first] - end) - - def perform(some_args) - SidekiqUniqueJobs.with_context(self.class.name) do - SidekiqUniqueJobs.logger.debug { "#{__method__}(#{some_args})" } - end - sleep 15 - end -end diff --git a/rails_example/app/workers/spawn_simple_worker.rb b/rails_example/app/workers/spawn_simple_worker.rb deleted file mode 100644 index 90aa9b9b8..000000000 --- a/rails_example/app/workers/spawn_simple_worker.rb +++ /dev/null @@ -1,13 +0,0 @@ -# frozen_string_literal: true - -class SpawnSimpleWorker - include Sidekiq::Worker - include Sidekiq::Status::Worker - - def perform(spawn_arg) - SidekiqUniqueJobs.with_context(self.class.name) do - logger.debug { "#{__method__}(#{spawn_arg})" } - end - SimpleWorker.perform_async spawn_arg - end -end diff --git a/rails_example/app/workers/test_uniq_job.rb b/rails_example/app/workers/test_uniq_job.rb deleted file mode 100644 index 94529f703..000000000 --- a/rails_example/app/workers/test_uniq_job.rb +++ /dev/null @@ -1,9 +0,0 @@ -class TestUniqJob - include Sidekiq::Worker - include Sidekiq::Status::Worker - sidekiq_options queue: :default, retry: false, unique: :until_executed - - def perform - sleep 3.minutes - end -end diff --git a/rails_example/app/workers/while_executing_with_timeout_worker.rb b/rails_example/app/workers/while_executing_with_timeout_worker.rb deleted file mode 100644 index d865eee1e..000000000 --- a/rails_example/app/workers/while_executing_with_timeout_worker.rb +++ /dev/null @@ -1,15 +0,0 @@ -# frozen_string_literal: true - -class WhileExecutingWithTimeoutWorker - include Sidekiq::Worker - include Sidekiq::Status::Worker - - sidekiq_options unique: :while_executing, lock_timeout: 5, unique_args: ->(args) { args.second } - - def perform(one, two) - SidekiqUniqueJobs.with_context(self.class.name) do - logger.info { "#{__method__}(#{one}, #{two})" } - end - sleep 10 - end -end diff --git a/rails_example/app/workers/while_executing_worker.rb b/rails_example/app/workers/while_executing_worker.rb deleted file mode 100644 index 8e30dcf4f..000000000 --- a/rails_example/app/workers/while_executing_worker.rb +++ /dev/null @@ -1,14 +0,0 @@ -# frozen_string_literal: true - -class WhileExecutingWorker - include Sidekiq::Worker - include Sidekiq::Status::Worker - - sidekiq_options unique: :while_executing, lock_timeout: 15 - - def perform(sleepy_time) - sleepy_time = sleepy_time.to_i - sleep sleepy_time if sleepy_time.positive? - Post.create!(title: "Some Random post that took #{sleepy_time} seconds to create", body: "The job_id was #{jid}") - end -end diff --git a/rails_example/app/workers/without_args_worker.rb b/rails_example/app/workers/without_args_worker.rb deleted file mode 100644 index c5582d34c..000000000 --- a/rails_example/app/workers/without_args_worker.rb +++ /dev/null @@ -1,20 +0,0 @@ -# frozen_string_literal: true - -class WithoutArgsWorker - include Sidekiq::Worker - include Sidekiq::Status::Worker - - sidekiq_options queue: :default, - retry: true, - backtrace: true, - unique: :until_executed, - unique_args: :custom_args - - def perform(_conditional = nil) - sleep 2 - end - - def self.custom_args - puts 'testing' - end -end diff --git a/rails_example/app/workers/without_argument_worker.rb b/rails_example/app/workers/without_argument_worker.rb deleted file mode 100644 index 694413de0..000000000 --- a/rails_example/app/workers/without_argument_worker.rb +++ /dev/null @@ -1,16 +0,0 @@ -# frozen_string_literal: true - -class WithoutArgumentWorker - include Sidekiq::Worker - include Sidekiq::Status::Worker - - sidekiq_options unique: :until_executed, - log_duplicate_payload: true - - def perform - SidekiqUniqueJobs.with_context(self.class.name) do - logger.debug { __method__.to_s } - end - sleep 20 - end -end diff --git a/rails_example/config/routes.rb b/rails_example/config/routes.rb deleted file mode 100644 index 9489c468b..000000000 --- a/rails_example/config/routes.rb +++ /dev/null @@ -1,17 +0,0 @@ -# frozen_string_literal: true - -Rails.application.routes.draw do - require 'sidekiq_unique_jobs/web' - require 'sidekiq-status/web' - mount Sidekiq::Web, at: '/sidekiq' - - get 'work' => 'work#index' - - get 'work/duplicate_simple' => 'work#duplicate_simple' - get 'work/duplicate_slow' => 'work#duplicate_slow' - get 'work/duplicate_nested' => 'work#duplicate_nested' - get 'work/duplicate_without_args' => 'work#duplicate_without_args' - get 'work/duplicate_with_args' => 'work#duplicate_with_args' - get 'work/duplicate_while_executing' => 'work#duplicate_while_executing' - get 'work/duplicate_while_executing_with_timeout' => 'work#duplicate_while_executing_with_timeout' -end diff --git a/rails_example/spec/workers/simple_worker_spec.rb b/rails_example/spec/workers/simple_worker_spec.rb deleted file mode 100644 index f1d85d3d1..000000000 --- a/rails_example/spec/workers/simple_worker_spec.rb +++ /dev/null @@ -1,7 +0,0 @@ -# frozen_string_literal: true - -require "rails_helper" - -describe SimpleWorker do - it { "behaves" } -end diff --git a/sidekiq-unique-jobs.gemspec b/sidekiq-unique-jobs.gemspec index 997ce07f4..93f04b4a3 100644 --- a/sidekiq-unique-jobs.gemspec +++ b/sidekiq-unique-jobs.gemspec @@ -36,7 +36,7 @@ Gem::Specification.new do |spec| spec.files = Dir.chdir(File.expand_path(__dir__)) do `git ls-files -z`.split("\x0").reject do |file| - file.match(%r{^(test|spec|features|gemfiles|pkg|rails_example|tmp)/}) + file.match(%r{^(test|spec|features|gemfiles|pkg|my_app|tmp)/}) end end