مراية لـ
https://github.com/postalserver/postal.git
تم المزامنة 2025-12-01 05:43:04 +00:00
chore: Upgrade to Ruby 3.2.1 & Rails 6.0
* chore: upgrade to rails 6.0 * chore: upgrade ruby to 3.2.1 * chore: upgrade bundler * chore: upgrade execjs * chore: upgrade to rails 6.1 * chore: switch to sentry-ruby from raven * chore: add extra platforms to gemfile
هذا الالتزام موجود في:
@@ -1 +1,2 @@
|
|||||||
2.7.7
|
3.2.1
|
||||||
|
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
FROM ruby:2.7.7-bullseye AS base
|
FROM ruby:3.2.1-bullseye AS base
|
||||||
|
|
||||||
SHELL ["/bin/bash", "-o", "pipefail", "-c"]
|
SHELL ["/bin/bash", "-o", "pipefail", "-c"]
|
||||||
RUN apt-get update \
|
RUN apt-get update \
|
||||||
@@ -31,7 +31,7 @@ RUN mkdir -p /opt/postal/app /opt/postal/config
|
|||||||
WORKDIR /opt/postal/app
|
WORKDIR /opt/postal/app
|
||||||
|
|
||||||
# Install bundler
|
# Install bundler
|
||||||
RUN gem install bundler -v 2.4.7 --no-doc
|
RUN gem install bundler -v 2.4.9 --no-doc
|
||||||
|
|
||||||
# Install the latest and active gem dependencies and re-run
|
# Install the latest and active gem dependencies and re-run
|
||||||
# the appropriate commands to handle installs.
|
# the appropriate commands to handle installs.
|
||||||
|
|||||||
14
Gemfile
14
Gemfile
@@ -1,5 +1,5 @@
|
|||||||
source "https://rubygems.org"
|
source "https://rubygems.org"
|
||||||
gem "authie", "~> 3.0"
|
gem "authie"
|
||||||
gem "autoprefixer-rails"
|
gem "autoprefixer-rails"
|
||||||
gem "basic_ssl"
|
gem "basic_ssl"
|
||||||
gem "bcrypt"
|
gem "bcrypt"
|
||||||
@@ -15,25 +15,27 @@ gem "gelf"
|
|||||||
gem "haml"
|
gem "haml"
|
||||||
gem "hashie"
|
gem "hashie"
|
||||||
gem "highline", require: false
|
gem "highline", require: false
|
||||||
|
gem "execjs", '~> 2.7', "< 2.8"
|
||||||
gem "jwt"
|
gem "jwt"
|
||||||
gem "kaminari"
|
gem "kaminari"
|
||||||
gem "mail", git: "https://github.com/mikel/mail.git", branch: "2-7-stable"
|
gem "mail"
|
||||||
gem "moonrope"
|
gem "moonrope"
|
||||||
gem "mysql2"
|
gem "mysql2"
|
||||||
gem "nifty-utils"
|
gem "nifty-utils"
|
||||||
gem "nilify_blanks"
|
gem "nilify_blanks"
|
||||||
gem "nio4r"
|
gem "nio4r"
|
||||||
gem "puma"
|
gem "puma"
|
||||||
gem "rails", "= 5.2.8.1"
|
gem "rails", "= 6.1.7.3"
|
||||||
gem "resolv", "~> 0.2.1"
|
gem "resolv", "~> 0.2.1"
|
||||||
gem "secure_headers"
|
gem "secure_headers"
|
||||||
gem "sentry-raven"
|
gem 'sentry-rails'
|
||||||
|
gem 'sentry-ruby'
|
||||||
gem "turbolinks", "~> 5"
|
gem "turbolinks", "~> 5"
|
||||||
|
|
||||||
group :development, :assets do
|
group :development, :assets do
|
||||||
gem "coffee-rails", "~> 4.2"
|
gem "coffee-rails", "~> 5.0"
|
||||||
gem "jquery-rails"
|
gem "jquery-rails"
|
||||||
gem "sass-rails", "~> 5.0"
|
gem "sass-rails"
|
||||||
gem "uglifier", ">= 1.3.0"
|
gem "uglifier", ">= 1.3.0"
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|||||||
369
Gemfile.lock
369
Gemfile.lock
@@ -1,91 +1,108 @@
|
|||||||
GIT
|
|
||||||
remote: https://github.com/mikel/mail.git
|
|
||||||
revision: 873aa3876efb372b9a0bb7319fe60a994cedfd05
|
|
||||||
branch: 2-7-stable
|
|
||||||
specs:
|
|
||||||
mail (2.7.2.edge)
|
|
||||||
mini_mime (>= 0.1.1)
|
|
||||||
|
|
||||||
GEM
|
GEM
|
||||||
remote: https://rubygems.org/
|
remote: https://rubygems.org/
|
||||||
specs:
|
specs:
|
||||||
actioncable (5.2.8.1)
|
actioncable (6.1.7.3)
|
||||||
actionpack (= 5.2.8.1)
|
actionpack (= 6.1.7.3)
|
||||||
|
activesupport (= 6.1.7.3)
|
||||||
nio4r (~> 2.0)
|
nio4r (~> 2.0)
|
||||||
websocket-driver (>= 0.6.1)
|
websocket-driver (>= 0.6.1)
|
||||||
actionmailer (5.2.8.1)
|
actionmailbox (6.1.7.3)
|
||||||
actionpack (= 5.2.8.1)
|
actionpack (= 6.1.7.3)
|
||||||
actionview (= 5.2.8.1)
|
activejob (= 6.1.7.3)
|
||||||
activejob (= 5.2.8.1)
|
activerecord (= 6.1.7.3)
|
||||||
|
activestorage (= 6.1.7.3)
|
||||||
|
activesupport (= 6.1.7.3)
|
||||||
|
mail (>= 2.7.1)
|
||||||
|
actionmailer (6.1.7.3)
|
||||||
|
actionpack (= 6.1.7.3)
|
||||||
|
actionview (= 6.1.7.3)
|
||||||
|
activejob (= 6.1.7.3)
|
||||||
|
activesupport (= 6.1.7.3)
|
||||||
mail (~> 2.5, >= 2.5.4)
|
mail (~> 2.5, >= 2.5.4)
|
||||||
rails-dom-testing (~> 2.0)
|
rails-dom-testing (~> 2.0)
|
||||||
actionpack (5.2.8.1)
|
actionpack (6.1.7.3)
|
||||||
actionview (= 5.2.8.1)
|
actionview (= 6.1.7.3)
|
||||||
activesupport (= 5.2.8.1)
|
activesupport (= 6.1.7.3)
|
||||||
rack (~> 2.0, >= 2.0.8)
|
rack (~> 2.0, >= 2.0.9)
|
||||||
rack-test (>= 0.6.3)
|
rack-test (>= 0.6.3)
|
||||||
rails-dom-testing (~> 2.0)
|
rails-dom-testing (~> 2.0)
|
||||||
rails-html-sanitizer (~> 1.0, >= 1.0.2)
|
rails-html-sanitizer (~> 1.0, >= 1.2.0)
|
||||||
actionview (5.2.8.1)
|
actiontext (6.1.7.3)
|
||||||
activesupport (= 5.2.8.1)
|
actionpack (= 6.1.7.3)
|
||||||
|
activerecord (= 6.1.7.3)
|
||||||
|
activestorage (= 6.1.7.3)
|
||||||
|
activesupport (= 6.1.7.3)
|
||||||
|
nokogiri (>= 1.8.5)
|
||||||
|
actionview (6.1.7.3)
|
||||||
|
activesupport (= 6.1.7.3)
|
||||||
builder (~> 3.1)
|
builder (~> 3.1)
|
||||||
erubi (~> 1.4)
|
erubi (~> 1.4)
|
||||||
rails-dom-testing (~> 2.0)
|
rails-dom-testing (~> 2.0)
|
||||||
rails-html-sanitizer (~> 1.0, >= 1.0.3)
|
rails-html-sanitizer (~> 1.1, >= 1.2.0)
|
||||||
activejob (5.2.8.1)
|
activejob (6.1.7.3)
|
||||||
activesupport (= 5.2.8.1)
|
activesupport (= 6.1.7.3)
|
||||||
globalid (>= 0.3.6)
|
globalid (>= 0.3.6)
|
||||||
activemodel (5.2.8.1)
|
activemodel (6.1.7.3)
|
||||||
activesupport (= 5.2.8.1)
|
activesupport (= 6.1.7.3)
|
||||||
activerecord (5.2.8.1)
|
activerecord (6.1.7.3)
|
||||||
activemodel (= 5.2.8.1)
|
activemodel (= 6.1.7.3)
|
||||||
activesupport (= 5.2.8.1)
|
activesupport (= 6.1.7.3)
|
||||||
arel (>= 9.0)
|
activestorage (6.1.7.3)
|
||||||
activestorage (5.2.8.1)
|
actionpack (= 6.1.7.3)
|
||||||
actionpack (= 5.2.8.1)
|
activejob (= 6.1.7.3)
|
||||||
activerecord (= 5.2.8.1)
|
activerecord (= 6.1.7.3)
|
||||||
marcel (~> 1.0.0)
|
activesupport (= 6.1.7.3)
|
||||||
activesupport (5.2.8.1)
|
marcel (~> 1.0)
|
||||||
|
mini_mime (>= 1.1.0)
|
||||||
|
activesupport (6.1.7.3)
|
||||||
concurrent-ruby (~> 1.0, >= 1.0.2)
|
concurrent-ruby (~> 1.0, >= 1.0.2)
|
||||||
i18n (>= 0.7, < 2)
|
i18n (>= 1.6, < 2)
|
||||||
minitest (~> 5.1)
|
minitest (>= 5.1)
|
||||||
tzinfo (~> 1.1)
|
tzinfo (~> 2.0)
|
||||||
amq-protocol (2.3.0)
|
zeitwerk (~> 2.3)
|
||||||
annotate (2.7.4)
|
amq-protocol (2.3.2)
|
||||||
activerecord (>= 3.2, < 6.0)
|
annotate (3.2.0)
|
||||||
rake (>= 10.4, < 13.0)
|
activerecord (>= 3.2, < 8.0)
|
||||||
arel (9.0.0)
|
rake (>= 10.4, < 14.0)
|
||||||
ast (2.4.2)
|
ast (2.4.2)
|
||||||
authie (3.3.1)
|
authie (3.4.0)
|
||||||
secure_random_string
|
secure_random_string
|
||||||
autoprefixer-rails (9.1.3)
|
autoprefixer-rails (10.4.13.0)
|
||||||
execjs
|
execjs (~> 2)
|
||||||
basic_ssl (1.0.3)
|
basic_ssl (1.0.3)
|
||||||
bcrypt (3.1.12)
|
bcrypt (3.1.18)
|
||||||
builder (3.2.4)
|
builder (3.2.4)
|
||||||
bunny (2.14.4)
|
bunny (2.20.3)
|
||||||
amq-protocol (~> 2.3, >= 2.3.0)
|
amq-protocol (~> 2.3, >= 2.3.1)
|
||||||
byebug (10.0.2)
|
sorted_set (~> 1, >= 1.0.2)
|
||||||
changey (1.0.0)
|
byebug (11.1.3)
|
||||||
activerecord (>= 4.2, < 6)
|
changey (1.1.0)
|
||||||
|
activerecord (>= 4.2, < 7)
|
||||||
chronic (0.10.2)
|
chronic (0.10.2)
|
||||||
clockwork (2.0.3)
|
clockwork (3.0.2)
|
||||||
|
activesupport
|
||||||
tzinfo
|
tzinfo
|
||||||
coffee-rails (4.2.2)
|
coffee-rails (5.0.0)
|
||||||
coffee-script (>= 2.2.0)
|
coffee-script (>= 2.2.0)
|
||||||
railties (>= 4.0.0)
|
railties (>= 5.2.0)
|
||||||
coffee-script (2.4.1)
|
coffee-script (2.4.1)
|
||||||
coffee-script-source
|
coffee-script-source
|
||||||
execjs
|
execjs
|
||||||
coffee-script-source (1.12.2)
|
coffee-script-source (1.12.2)
|
||||||
concurrent-ruby (1.2.0)
|
concurrent-ruby (1.2.2)
|
||||||
crass (1.0.6)
|
crass (1.0.6)
|
||||||
database_cleaner (1.7.0)
|
database_cleaner (2.0.2)
|
||||||
deep_merge (1.2.1)
|
database_cleaner-active_record (>= 2, < 3)
|
||||||
diff-lcs (1.3)
|
database_cleaner-active_record (2.1.0)
|
||||||
dotenv (2.7.6)
|
activerecord (>= 5.a)
|
||||||
dotenv-rails (2.7.6)
|
database_cleaner-core (~> 2.0.0)
|
||||||
dotenv (= 2.7.6)
|
database_cleaner-core (2.0.1)
|
||||||
|
date (3.3.3)
|
||||||
|
deep_merge (1.2.2)
|
||||||
|
diff-lcs (1.5.0)
|
||||||
|
dotenv (2.8.1)
|
||||||
|
dotenv-rails (2.8.1)
|
||||||
|
dotenv (= 2.8.1)
|
||||||
railties (>= 3.2)
|
railties (>= 3.2)
|
||||||
dynamic_form (1.1.4)
|
dynamic_form (1.1.4)
|
||||||
encrypto_signo (1.0.0)
|
encrypto_signo (1.0.0)
|
||||||
@@ -96,124 +113,139 @@ GEM
|
|||||||
factory_bot_rails (4.11.1)
|
factory_bot_rails (4.11.1)
|
||||||
factory_bot (~> 4.11.1)
|
factory_bot (~> 4.11.1)
|
||||||
railties (>= 3.0.0)
|
railties (>= 3.0.0)
|
||||||
faraday (0.15.2)
|
|
||||||
multipart-post (>= 1.2, < 3)
|
|
||||||
ffi (1.15.5)
|
ffi (1.15.5)
|
||||||
foreman (0.85.0)
|
foreman (0.87.2)
|
||||||
thor (~> 0.19.1)
|
gelf (3.1.0)
|
||||||
gelf (3.0.0)
|
|
||||||
json
|
json
|
||||||
globalid (1.1.0)
|
globalid (1.1.0)
|
||||||
activesupport (>= 5.0)
|
activesupport (>= 5.0)
|
||||||
haml (5.1.2)
|
haml (6.1.1)
|
||||||
temple (>= 0.8.0)
|
temple (>= 0.8.2)
|
||||||
|
thor
|
||||||
tilt
|
tilt
|
||||||
hashie (3.6.0)
|
hashie (5.0.0)
|
||||||
highline (2.0.0)
|
highline (2.1.0)
|
||||||
i18n (1.12.0)
|
i18n (1.12.0)
|
||||||
concurrent-ruby (~> 1.0)
|
concurrent-ruby (~> 1.0)
|
||||||
jquery-rails (4.3.3)
|
jquery-rails (4.5.1)
|
||||||
rails-dom-testing (>= 1, < 3)
|
rails-dom-testing (>= 1, < 3)
|
||||||
railties (>= 4.2.0)
|
railties (>= 4.2.0)
|
||||||
thor (>= 0.14, < 2.0)
|
thor (>= 0.14, < 2.0)
|
||||||
json (2.5.1)
|
json (2.6.3)
|
||||||
jwt (2.1.0)
|
jwt (2.7.0)
|
||||||
kaminari (1.2.1)
|
kaminari (1.2.2)
|
||||||
activesupport (>= 4.1.0)
|
activesupport (>= 4.1.0)
|
||||||
kaminari-actionview (= 1.2.1)
|
kaminari-actionview (= 1.2.2)
|
||||||
kaminari-activerecord (= 1.2.1)
|
kaminari-activerecord (= 1.2.2)
|
||||||
kaminari-core (= 1.2.1)
|
kaminari-core (= 1.2.2)
|
||||||
kaminari-actionview (1.2.1)
|
kaminari-actionview (1.2.2)
|
||||||
actionview
|
actionview
|
||||||
kaminari-core (= 1.2.1)
|
kaminari-core (= 1.2.2)
|
||||||
kaminari-activerecord (1.2.1)
|
kaminari-activerecord (1.2.2)
|
||||||
activerecord
|
activerecord
|
||||||
kaminari-core (= 1.2.1)
|
kaminari-core (= 1.2.2)
|
||||||
kaminari-core (1.2.1)
|
kaminari-core (1.2.2)
|
||||||
loofah (2.19.1)
|
loofah (2.19.1)
|
||||||
crass (~> 1.0.2)
|
crass (~> 1.0.2)
|
||||||
nokogiri (>= 1.5.9)
|
nokogiri (>= 1.5.9)
|
||||||
|
mail (2.8.1)
|
||||||
|
mini_mime (>= 0.1.1)
|
||||||
|
net-imap
|
||||||
|
net-pop
|
||||||
|
net-smtp
|
||||||
marcel (1.0.2)
|
marcel (1.0.2)
|
||||||
method_source (1.0.0)
|
method_source (1.0.0)
|
||||||
mini_mime (1.1.2)
|
mini_mime (1.1.2)
|
||||||
mini_portile2 (2.8.1)
|
mini_portile2 (2.8.1)
|
||||||
minitest (5.17.0)
|
minitest (5.18.0)
|
||||||
moonrope (2.0.2)
|
moonrope (2.0.2)
|
||||||
deep_merge (~> 1.0)
|
deep_merge (~> 1.0)
|
||||||
json
|
json
|
||||||
rack (>= 1.4)
|
rack (>= 1.4)
|
||||||
multipart-post (2.0.0)
|
mysql2 (0.5.5)
|
||||||
mysql2 (0.5.3)
|
net-imap (0.3.4)
|
||||||
|
date
|
||||||
|
net-protocol
|
||||||
|
net-pop (0.1.2)
|
||||||
|
net-protocol
|
||||||
|
net-protocol (0.2.1)
|
||||||
|
timeout
|
||||||
|
net-smtp (0.3.3)
|
||||||
|
net-protocol
|
||||||
nifty-utils (1.1.7)
|
nifty-utils (1.1.7)
|
||||||
nilify_blanks (1.3.0)
|
nilify_blanks (1.4.0)
|
||||||
activerecord (>= 3.0.0)
|
activerecord (>= 4.0.0)
|
||||||
activesupport (>= 3.0.0)
|
activesupport (>= 4.0.0)
|
||||||
nio4r (2.5.8)
|
nio4r (2.5.8)
|
||||||
nokogiri (1.14.2)
|
nokogiri (1.14.2)
|
||||||
mini_portile2 (~> 2.8.0)
|
mini_portile2 (~> 2.8.0)
|
||||||
racc (~> 1.4)
|
racc (~> 1.4)
|
||||||
|
nokogiri (1.14.2-arm64-darwin)
|
||||||
|
racc (~> 1.4)
|
||||||
|
nokogiri (1.14.2-x86_64-linux)
|
||||||
|
racc (~> 1.4)
|
||||||
parallel (1.22.1)
|
parallel (1.22.1)
|
||||||
parser (3.2.1.1)
|
parser (3.2.1.1)
|
||||||
ast (~> 2.4.1)
|
ast (~> 2.4.1)
|
||||||
puma (6.1.0)
|
puma (6.1.1)
|
||||||
nio4r (~> 2.0)
|
nio4r (~> 2.0)
|
||||||
racc (1.6.2)
|
racc (1.6.2)
|
||||||
rack (2.2.6.4)
|
rack (2.2.6.4)
|
||||||
rack-test (2.0.2)
|
rack-test (2.1.0)
|
||||||
rack (>= 1.3)
|
rack (>= 1.3)
|
||||||
rails (5.2.8.1)
|
rails (6.1.7.3)
|
||||||
actioncable (= 5.2.8.1)
|
actioncable (= 6.1.7.3)
|
||||||
actionmailer (= 5.2.8.1)
|
actionmailbox (= 6.1.7.3)
|
||||||
actionpack (= 5.2.8.1)
|
actionmailer (= 6.1.7.3)
|
||||||
actionview (= 5.2.8.1)
|
actionpack (= 6.1.7.3)
|
||||||
activejob (= 5.2.8.1)
|
actiontext (= 6.1.7.3)
|
||||||
activemodel (= 5.2.8.1)
|
actionview (= 6.1.7.3)
|
||||||
activerecord (= 5.2.8.1)
|
activejob (= 6.1.7.3)
|
||||||
activestorage (= 5.2.8.1)
|
activemodel (= 6.1.7.3)
|
||||||
activesupport (= 5.2.8.1)
|
activerecord (= 6.1.7.3)
|
||||||
bundler (>= 1.3.0)
|
activestorage (= 6.1.7.3)
|
||||||
railties (= 5.2.8.1)
|
activesupport (= 6.1.7.3)
|
||||||
|
bundler (>= 1.15.0)
|
||||||
|
railties (= 6.1.7.3)
|
||||||
sprockets-rails (>= 2.0.0)
|
sprockets-rails (>= 2.0.0)
|
||||||
rails-dom-testing (2.0.3)
|
rails-dom-testing (2.0.3)
|
||||||
activesupport (>= 4.2.0)
|
activesupport (>= 4.2.0)
|
||||||
nokogiri (>= 1.6)
|
nokogiri (>= 1.6)
|
||||||
rails-html-sanitizer (1.5.0)
|
rails-html-sanitizer (1.5.0)
|
||||||
loofah (~> 2.19, >= 2.19.1)
|
loofah (~> 2.19, >= 2.19.1)
|
||||||
railties (5.2.8.1)
|
railties (6.1.7.3)
|
||||||
actionpack (= 5.2.8.1)
|
actionpack (= 6.1.7.3)
|
||||||
activesupport (= 5.2.8.1)
|
activesupport (= 6.1.7.3)
|
||||||
method_source
|
method_source
|
||||||
rake (>= 0.8.7)
|
rake (>= 12.2)
|
||||||
thor (>= 0.19.0, < 2.0)
|
thor (~> 1.0)
|
||||||
rainbow (3.1.1)
|
rainbow (3.1.1)
|
||||||
rake (12.3.3)
|
rake (13.0.6)
|
||||||
rb-fsevent (0.10.3)
|
rbtree (0.4.6)
|
||||||
rb-inotify (0.9.10)
|
|
||||||
ffi (>= 0.5.0, < 2)
|
|
||||||
regexp_parser (2.7.0)
|
regexp_parser (2.7.0)
|
||||||
resolv (0.2.1)
|
resolv (0.2.2)
|
||||||
rexml (3.2.5)
|
rexml (3.2.5)
|
||||||
rspec (3.8.0)
|
rspec (3.12.0)
|
||||||
rspec-core (~> 3.8.0)
|
rspec-core (~> 3.12.0)
|
||||||
rspec-expectations (~> 3.8.0)
|
rspec-expectations (~> 3.12.0)
|
||||||
rspec-mocks (~> 3.8.0)
|
rspec-mocks (~> 3.12.0)
|
||||||
rspec-core (3.8.0)
|
rspec-core (3.12.1)
|
||||||
rspec-support (~> 3.8.0)
|
rspec-support (~> 3.12.0)
|
||||||
rspec-expectations (3.8.1)
|
rspec-expectations (3.12.2)
|
||||||
diff-lcs (>= 1.2.0, < 2.0)
|
diff-lcs (>= 1.2.0, < 2.0)
|
||||||
rspec-support (~> 3.8.0)
|
rspec-support (~> 3.12.0)
|
||||||
rspec-mocks (3.8.0)
|
rspec-mocks (3.12.4)
|
||||||
diff-lcs (>= 1.2.0, < 2.0)
|
diff-lcs (>= 1.2.0, < 2.0)
|
||||||
rspec-support (~> 3.8.0)
|
rspec-support (~> 3.12.0)
|
||||||
rspec-rails (3.8.0)
|
rspec-rails (6.0.1)
|
||||||
actionpack (>= 3.0)
|
actionpack (>= 6.1)
|
||||||
activesupport (>= 3.0)
|
activesupport (>= 6.1)
|
||||||
railties (>= 3.0)
|
railties (>= 6.1)
|
||||||
rspec-core (~> 3.8.0)
|
rspec-core (~> 3.11)
|
||||||
rspec-expectations (~> 3.8.0)
|
rspec-expectations (~> 3.11)
|
||||||
rspec-mocks (~> 3.8.0)
|
rspec-mocks (~> 3.11)
|
||||||
rspec-support (~> 3.8.0)
|
rspec-support (~> 3.11)
|
||||||
rspec-support (3.8.0)
|
rspec-support (3.12.0)
|
||||||
rubocop (1.48.1)
|
rubocop (1.48.1)
|
||||||
json (~> 2.3)
|
json (~> 2.3)
|
||||||
parallel (~> 1.10)
|
parallel (~> 1.10)
|
||||||
@@ -231,50 +263,59 @@ GEM
|
|||||||
rack (>= 1.1)
|
rack (>= 1.1)
|
||||||
rubocop (>= 1.33.0, < 2.0)
|
rubocop (>= 1.33.0, < 2.0)
|
||||||
ruby-progressbar (1.13.0)
|
ruby-progressbar (1.13.0)
|
||||||
sass (3.5.7)
|
sass-rails (6.0.0)
|
||||||
sass-listen (~> 4.0.0)
|
sassc-rails (~> 2.1, >= 2.1.1)
|
||||||
sass-listen (4.0.0)
|
sassc (2.4.0)
|
||||||
rb-fsevent (~> 0.9, >= 0.9.4)
|
ffi (~> 1.9)
|
||||||
rb-inotify (~> 0.9, >= 0.9.7)
|
sassc-rails (2.1.2)
|
||||||
sass-rails (5.0.7)
|
railties (>= 4.0.0)
|
||||||
railties (>= 4.0.0, < 6)
|
sassc (>= 2.0)
|
||||||
sass (~> 3.1)
|
sprockets (> 3.0)
|
||||||
sprockets (>= 2.8, < 4.0)
|
sprockets-rails
|
||||||
sprockets-rails (>= 2.0, < 4.0)
|
tilt
|
||||||
tilt (>= 1.1, < 3)
|
secure_headers (6.5.0)
|
||||||
secure_headers (6.3.0)
|
|
||||||
secure_random_string (1.0.0)
|
secure_random_string (1.0.0)
|
||||||
sentry-raven (2.7.4)
|
sentry-rails (5.8.0)
|
||||||
faraday (>= 0.7.6, < 1.0)
|
railties (>= 5.0)
|
||||||
sprockets (3.7.2)
|
sentry-ruby (~> 5.8.0)
|
||||||
|
sentry-ruby (5.8.0)
|
||||||
|
concurrent-ruby (~> 1.0, >= 1.0.2)
|
||||||
|
set (1.0.3)
|
||||||
|
sorted_set (1.0.3)
|
||||||
|
rbtree
|
||||||
|
set (~> 1.0)
|
||||||
|
sprockets (4.2.0)
|
||||||
concurrent-ruby (~> 1.0)
|
concurrent-ruby (~> 1.0)
|
||||||
rack (> 1, < 3)
|
rack (>= 2.2.4, < 4)
|
||||||
sprockets-rails (3.4.2)
|
sprockets-rails (3.4.2)
|
||||||
actionpack (>= 5.2)
|
actionpack (>= 5.2)
|
||||||
activesupport (>= 5.2)
|
activesupport (>= 5.2)
|
||||||
sprockets (>= 3.0.0)
|
sprockets (>= 3.0.0)
|
||||||
temple (0.8.2)
|
temple (0.10.0)
|
||||||
thor (0.19.4)
|
thor (1.2.1)
|
||||||
thread_safe (0.3.6)
|
tilt (2.1.0)
|
||||||
tilt (2.0.10)
|
timeout (0.3.2)
|
||||||
turbolinks (5.2.0)
|
turbolinks (5.2.1)
|
||||||
turbolinks-source (~> 5.2)
|
turbolinks-source (~> 5.2)
|
||||||
turbolinks-source (5.2.0)
|
turbolinks-source (5.2.0)
|
||||||
tzinfo (1.2.11)
|
tzinfo (2.0.6)
|
||||||
thread_safe (~> 0.1)
|
concurrent-ruby (~> 1.0)
|
||||||
uglifier (4.1.18)
|
uglifier (4.2.0)
|
||||||
execjs (>= 0.3.0, < 3)
|
execjs (>= 0.3.0, < 3)
|
||||||
unicode-display_width (2.4.2)
|
unicode-display_width (2.4.2)
|
||||||
websocket-driver (0.7.5)
|
websocket-driver (0.7.5)
|
||||||
websocket-extensions (>= 0.1.0)
|
websocket-extensions (>= 0.1.0)
|
||||||
websocket-extensions (0.1.5)
|
websocket-extensions (0.1.5)
|
||||||
|
zeitwerk (2.6.7)
|
||||||
|
|
||||||
PLATFORMS
|
PLATFORMS
|
||||||
|
arm64-darwin-22
|
||||||
ruby
|
ruby
|
||||||
|
x86_64-linux
|
||||||
|
|
||||||
DEPENDENCIES
|
DEPENDENCIES
|
||||||
annotate
|
annotate
|
||||||
authie (~> 3.0)
|
authie
|
||||||
autoprefixer-rails
|
autoprefixer-rails
|
||||||
basic_ssl
|
basic_ssl
|
||||||
bcrypt
|
bcrypt
|
||||||
@@ -283,11 +324,12 @@ DEPENDENCIES
|
|||||||
changey
|
changey
|
||||||
chronic
|
chronic
|
||||||
clockwork
|
clockwork
|
||||||
coffee-rails (~> 4.2)
|
coffee-rails (~> 5.0)
|
||||||
database_cleaner
|
database_cleaner
|
||||||
dotenv-rails
|
dotenv-rails
|
||||||
dynamic_form
|
dynamic_form
|
||||||
encrypto_signo
|
encrypto_signo
|
||||||
|
execjs (~> 2.7, < 2.8)
|
||||||
factory_bot_rails (~> 4.0)
|
factory_bot_rails (~> 4.0)
|
||||||
foreman
|
foreman
|
||||||
gelf
|
gelf
|
||||||
@@ -297,24 +339,25 @@ DEPENDENCIES
|
|||||||
jquery-rails
|
jquery-rails
|
||||||
jwt
|
jwt
|
||||||
kaminari
|
kaminari
|
||||||
mail!
|
mail
|
||||||
moonrope
|
moonrope
|
||||||
mysql2
|
mysql2
|
||||||
nifty-utils
|
nifty-utils
|
||||||
nilify_blanks
|
nilify_blanks
|
||||||
nio4r
|
nio4r
|
||||||
puma
|
puma
|
||||||
rails (= 5.2.8.1)
|
rails (= 6.1.7.3)
|
||||||
resolv (~> 0.2.1)
|
resolv (~> 0.2.1)
|
||||||
rspec
|
rspec
|
||||||
rspec-rails
|
rspec-rails
|
||||||
rubocop
|
rubocop
|
||||||
rubocop-rails
|
rubocop-rails
|
||||||
sass-rails (~> 5.0)
|
sass-rails
|
||||||
secure_headers
|
secure_headers
|
||||||
sentry-raven
|
sentry-rails
|
||||||
|
sentry-ruby
|
||||||
turbolinks (~> 5)
|
turbolinks (~> 5)
|
||||||
uglifier (>= 1.3.0)
|
uglifier (>= 1.3.0)
|
||||||
|
|
||||||
BUNDLED WITH
|
BUNDLED WITH
|
||||||
2.4.7
|
2.4.9
|
||||||
|
|||||||
@@ -1,3 +1,5 @@
|
|||||||
//= link_tree ../images
|
//= link_tree ../images
|
||||||
//= link_directory ../javascripts .js
|
//= link_directory ../javascripts .js
|
||||||
//= link_directory ../stylesheets .css
|
//= link_directory ../stylesheets .css
|
||||||
|
//= link application/application.css
|
||||||
|
//= link application/application.js
|
||||||
|
|||||||
@@ -424,8 +424,8 @@ class UnqueueMessageJob < Postal::Job
|
|||||||
e.backtrace.each { |e| log("#{log_prefix} #{e}") }
|
e.backtrace.each { |e| log("#{log_prefix} #{e}") }
|
||||||
queued_message.retry_later
|
queued_message.retry_later
|
||||||
log "#{log_prefix} Queued message was unlocked"
|
log "#{log_prefix} Queued message was unlocked"
|
||||||
if defined?(Raven)
|
if defined?(Sentry)
|
||||||
Raven.capture_exception(e, extra: { job_id: self.id, server_id: queued_message.server_id, message_id: queued_message.message_id })
|
Sentry.capture_exception(e, extra: { job_id: self.id, server_id: queued_message.server_id, message_id: queued_message.message_id })
|
||||||
end
|
end
|
||||||
if queued_message.message
|
if queued_message.message
|
||||||
queued_message.message.create_delivery("Error", details: "An internal error occurred while sending this message. This message will be retried automatically. If this persists, contact support for assistance.", output: "#{e.class}: #{e.message}", log_id: "J-#{self.id}")
|
queued_message.message.create_delivery("Error", details: "An internal error occurred while sending this message. This message will be retried automatically. If this persists, contact support for assistance.", output: "#{e.class}: #{e.message}", log_id: "J-#{self.id}")
|
||||||
|
|||||||
@@ -19,7 +19,7 @@ class AddressEndpoint < ApplicationRecord
|
|||||||
has_many :routes, as: :endpoint
|
has_many :routes, as: :endpoint
|
||||||
has_many :additional_route_endpoints, dependent: :destroy, as: :endpoint
|
has_many :additional_route_endpoints, dependent: :destroy, as: :endpoint
|
||||||
|
|
||||||
validates :address, presence: true, format: { with: /@/ }, uniqueness: { scope: [:server_id], message: "has already been added" }
|
validates :address, presence: true, format: { with: /@/ }, uniqueness: { scope: [:server_id], message: "has already been added", case_sensitive: false }
|
||||||
|
|
||||||
before_destroy :update_routes
|
before_destroy :update_routes
|
||||||
|
|
||||||
|
|||||||
@@ -1,22 +1,28 @@
|
|||||||
class User
|
module HasAuthentication
|
||||||
|
|
||||||
has_secure_password
|
extend ActiveSupport::Concern
|
||||||
|
|
||||||
validates :password, length: { minimum: 8, allow_blank: true }
|
included do
|
||||||
|
has_secure_password
|
||||||
|
|
||||||
when_attribute :password_digest, changes_to: :anything do
|
validates :password, length: { minimum: 8, allow_blank: true }
|
||||||
before_save do
|
|
||||||
self.password_reset_token = nil
|
when_attribute :password_digest, changes_to: :anything do
|
||||||
self.password_reset_token_valid_until = nil
|
before_save do
|
||||||
|
self.password_reset_token = nil
|
||||||
|
self.password_reset_token_valid_until = nil
|
||||||
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
def self.authenticate(email_address, password)
|
class_methods do
|
||||||
user = where(email_address: email_address).first
|
def authenticate(email_address, password)
|
||||||
raise Postal::Errors::AuthenticationError, "InvalidEmailAddress" if user.nil?
|
user = where(email_address: email_address).first
|
||||||
raise Postal::Errors::AuthenticationError, "InvalidPassword" unless user.authenticate(password)
|
raise Postal::Errors::AuthenticationError, "InvalidEmailAddress" if user.nil?
|
||||||
|
raise Postal::Errors::AuthenticationError, "InvalidPassword" unless user.authenticate(password)
|
||||||
|
|
||||||
user
|
user
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
def authenticate_with_previous_password_first(unencrypted_password)
|
def authenticate_with_previous_password_first(unencrypted_password)
|
||||||
@@ -1,6 +1,6 @@
|
|||||||
require "resolv"
|
require "resolv"
|
||||||
|
|
||||||
class Domain
|
module HasDNSChecks
|
||||||
|
|
||||||
def dns_ok?
|
def dns_ok?
|
||||||
spf_status == "OK" && dkim_status == "OK" && ["OK", "Missing"].include?(mx_status) && ["OK", "Missing"].include?(return_path_status)
|
spf_status == "OK" && dkim_status == "OK" && ["OK", "Missing"].include?(mx_status) && ["OK", "Missing"].include?(return_path_status)
|
||||||
@@ -23,7 +23,7 @@ class Credential < ApplicationRecord
|
|||||||
|
|
||||||
TYPES = ["SMTP", "API", "SMTP-IP"]
|
TYPES = ["SMTP", "API", "SMTP-IP"]
|
||||||
|
|
||||||
validates :key, presence: true, uniqueness: true
|
validates :key, presence: true, uniqueness: { case_sensitive: false }
|
||||||
validates :type, inclusion: { in: TYPES }
|
validates :type, inclusion: { in: TYPES }
|
||||||
validates :name, presence: true
|
validates :name, presence: true
|
||||||
validate :validate_key_cannot_be_changed
|
validate :validate_key_cannot_be_changed
|
||||||
|
|||||||
@@ -40,8 +40,7 @@ class Domain < ApplicationRecord
|
|||||||
|
|
||||||
include HasUUID
|
include HasUUID
|
||||||
|
|
||||||
require_dependency "domain/dns_checks"
|
include HasDNSChecks
|
||||||
require_dependency "domain/dns_verification"
|
|
||||||
|
|
||||||
VERIFICATION_EMAIL_ALIASES = ["webmaster", "postmaster", "admin", "administrator", "hostmaster"]
|
VERIFICATION_EMAIL_ALIASES = ["webmaster", "postmaster", "admin", "administrator", "hostmaster"]
|
||||||
|
|
||||||
@@ -52,7 +51,7 @@ class Domain < ApplicationRecord
|
|||||||
|
|
||||||
VERIFICATION_METHODS = ["DNS", "Email"]
|
VERIFICATION_METHODS = ["DNS", "Email"]
|
||||||
|
|
||||||
validates :name, presence: true, format: { with: /\A[a-z0-9\-.]*\z/ }, uniqueness: { scope: [:owner_type, :owner_id], message: "is already added" }
|
validates :name, presence: true, format: { with: /\A[a-z0-9\-.]*\z/ }, uniqueness: { case_sensitive: false, scope: [:owner_type, :owner_id], message: "is already added" }
|
||||||
validates :verification_method, inclusion: { in: VERIFICATION_METHODS }
|
validates :verification_method, inclusion: { in: VERIFICATION_METHODS }
|
||||||
|
|
||||||
random_string :dkim_identifier_string, type: :chars, length: 6, unique: true, upper_letters_only: true
|
random_string :dkim_identifier_string, type: :chars, length: 6, unique: true, upper_letters_only: true
|
||||||
@@ -138,6 +137,22 @@ class Domain < ApplicationRecord
|
|||||||
@resolver ||= Postal.config.general.use_local_ns_for_domains? ? Resolv::DNS.new : Resolv::DNS.new(nameserver: nameservers)
|
@resolver ||= Postal.config.general.use_local_ns_for_domains? ? Resolv::DNS.new : Resolv::DNS.new(nameserver: nameservers)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def dns_verification_string
|
||||||
|
"#{Postal.config.dns.domain_verify_prefix} #{verification_token}"
|
||||||
|
end
|
||||||
|
|
||||||
|
def verify_with_dns
|
||||||
|
return false unless verification_method == "DNS"
|
||||||
|
|
||||||
|
result = resolver.getresources(name, Resolv::DNS::Resource::IN::TXT)
|
||||||
|
if result.map { |d| d.data.to_s.strip }.include?(dns_verification_string)
|
||||||
|
self.verified_at = Time.now
|
||||||
|
save
|
||||||
|
else
|
||||||
|
false
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
private
|
private
|
||||||
|
|
||||||
def get_nameservers
|
def get_nameservers
|
||||||
|
|||||||
@@ -1,23 +0,0 @@
|
|||||||
require "resolv"
|
|
||||||
|
|
||||||
class Domain
|
|
||||||
|
|
||||||
def dns_verification_string
|
|
||||||
"#{Postal.config.dns.domain_verify_prefix} #{verification_token}"
|
|
||||||
end
|
|
||||||
|
|
||||||
def verify_with_dns
|
|
||||||
return false unless verification_method == "DNS"
|
|
||||||
|
|
||||||
result = resolver.getresources(name, Resolv::DNS::Resource::IN::TXT)
|
|
||||||
if result.map { |d| d.data.to_s.strip }.include?(dns_verification_string)
|
|
||||||
self.verified_at = Time.now
|
|
||||||
save
|
|
||||||
else
|
|
||||||
false
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
end
|
|
||||||
|
|
||||||
# -*- SkipSchemaAnnotations
|
|
||||||
@@ -31,7 +31,7 @@ class Organization < ApplicationRecord
|
|||||||
include HasSoftDestroy
|
include HasSoftDestroy
|
||||||
|
|
||||||
validates :name, presence: true
|
validates :name, presence: true
|
||||||
validates :permalink, presence: true, format: { with: /\A[a-z0-9-]*\z/ }, uniqueness: true, exclusion: { in: RESERVED_PERMALINKS }
|
validates :permalink, presence: true, format: { with: /\A[a-z0-9-]*\z/ }, uniqueness: { case_sensitive: false }, exclusion: { in: RESERVED_PERMALINKS }
|
||||||
validates :time_zone, presence: true
|
validates :time_zone, presence: true
|
||||||
|
|
||||||
default_value :time_zone, -> { "UTC" }
|
default_value :time_zone, -> { "UTC" }
|
||||||
|
|||||||
@@ -72,9 +72,9 @@ class Server < ApplicationRecord
|
|||||||
default_value :spam_threshold, -> { Postal.config.general.default_spam_threshold }
|
default_value :spam_threshold, -> { Postal.config.general.default_spam_threshold }
|
||||||
default_value :spam_failure_threshold, -> { Postal.config.general.default_spam_failure_threshold }
|
default_value :spam_failure_threshold, -> { Postal.config.general.default_spam_failure_threshold }
|
||||||
|
|
||||||
validates :name, presence: true, uniqueness: { scope: :organization_id }
|
validates :name, presence: true, uniqueness: { scope: :organization_id, case_sensitive: false }
|
||||||
validates :mode, inclusion: { in: MODES }
|
validates :mode, inclusion: { in: MODES }
|
||||||
validates :permalink, presence: true, uniqueness: { scope: :organization_id }, format: { with: /\A[a-z0-9-]*\z/ }, exclusion: { in: RESERVED_PERMALINKS }
|
validates :permalink, presence: true, uniqueness: { scope: :organization_id, case_sensitive: false }, format: { with: /\A[a-z0-9-]*\z/ }, exclusion: { in: RESERVED_PERMALINKS }
|
||||||
validate :validate_ip_pool_belongs_to_organization
|
validate :validate_ip_pool_belongs_to_organization
|
||||||
|
|
||||||
before_validation(on: :create) do
|
before_validation(on: :create) do
|
||||||
|
|||||||
@@ -27,8 +27,8 @@ class TrackDomain < ApplicationRecord
|
|||||||
belongs_to :server
|
belongs_to :server
|
||||||
belongs_to :domain
|
belongs_to :domain
|
||||||
|
|
||||||
validates :name, presence: true, format: { with: /\A[a-z0-9-]+\z/ }, uniqueness: { scope: :domain_id, message: "is already added" }
|
validates :name, presence: true, format: { with: /\A[a-z0-9-]+\z/ }, uniqueness: { scope: :domain_id, case_sensitive: false, message: "is already added" }
|
||||||
validates :domain_id, uniqueness: { scope: :server_id, message: "already has a track domain for this server" }
|
validates :domain_id, uniqueness: { scope: :server_id, case_sensitive: false, message: "already has a track domain for this server" }
|
||||||
validate :validate_domain_belongs_to_server
|
validate :validate_domain_belongs_to_server
|
||||||
|
|
||||||
scope :ok, -> { where(dns_status: "OK") }
|
scope :ok, -> { where(dns_status: "OK") }
|
||||||
|
|||||||
@@ -27,11 +27,11 @@ class User < ApplicationRecord
|
|||||||
|
|
||||||
include HasUUID
|
include HasUUID
|
||||||
|
|
||||||
require_dependency "user/authentication"
|
include HasAuthentication
|
||||||
|
|
||||||
validates :first_name, presence: true
|
validates :first_name, presence: true
|
||||||
validates :last_name, presence: true
|
validates :last_name, presence: true
|
||||||
validates :email_address, presence: true, uniqueness: true, format: { with: /@/, allow_blank: true }
|
validates :email_address, presence: true, uniqueness: { case_sensitive: false }, format: { with: /@/, allow_blank: true }
|
||||||
validates :time_zone, presence: true
|
validates :time_zone, presence: true
|
||||||
|
|
||||||
default_value :time_zone, -> { "UTC" }
|
default_value :time_zone, -> { "UTC" }
|
||||||
|
|||||||
@@ -18,7 +18,7 @@ class UserInvite < ApplicationRecord
|
|||||||
|
|
||||||
include HasUUID
|
include HasUUID
|
||||||
|
|
||||||
validates :email_address, presence: true, uniqueness: true, format: { with: /@/, allow_blank: true }
|
validates :email_address, presence: true, uniqueness: { case_sensitive: false }, format: { with: /@/, allow_blank: true }
|
||||||
|
|
||||||
has_many :organization_users, dependent: :destroy, as: :user
|
has_many :organization_users, dependent: :destroy, as: :user
|
||||||
has_many :organizations, through: :organization_users
|
has_many :organizations, through: :organization_users
|
||||||
|
|||||||
@@ -58,4 +58,3 @@
|
|||||||
Powered by #{link_to "Postal", "https://postalserver.io", target: '_blank'} #{Postal.version}.
|
Powered by #{link_to "Postal", "https://postalserver.io", target: '_blank'} #{Postal.version}.
|
||||||
%li= link_to "Documentation", "https://docs.postalserver.io", target: '_blank'
|
%li= link_to "Documentation", "https://docs.postalserver.io", target: '_blank'
|
||||||
%li= link_to "Ask for help", "https://discussions.postalserver.io", target: '_blank'
|
%li= link_to "Ask for help", "https://discussions.postalserver.io", target: '_blank'
|
||||||
|
|
||||||
|
|||||||
@@ -15,6 +15,8 @@ Bundler.require(*Rails.groups)
|
|||||||
module Postal
|
module Postal
|
||||||
class Application < Rails::Application
|
class Application < Rails::Application
|
||||||
|
|
||||||
|
config.load_defaults 6.0
|
||||||
|
|
||||||
# Disable most generators
|
# Disable most generators
|
||||||
config.generators do |g|
|
config.generators do |g|
|
||||||
g.orm :active_record
|
g.orm :active_record
|
||||||
@@ -36,5 +38,7 @@ module Postal
|
|||||||
|
|
||||||
config.logger = Postal.logger_for(:rails)
|
config.logger = Postal.logger_for(:rails)
|
||||||
|
|
||||||
|
config.hosts << Postal.config.web.host
|
||||||
|
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|||||||
@@ -1,14 +1,7 @@
|
|||||||
require "postal/config"
|
require "postal/config"
|
||||||
|
|
||||||
if Postal.config.general&.exception_url
|
if Postal.config.general&.exception_url
|
||||||
require "raven"
|
Sentry.init do |config|
|
||||||
Raven.configure do |config|
|
|
||||||
config.dsn = Postal.config.general.exception_url
|
config.dsn = Postal.config.general.exception_url
|
||||||
config.environments = ["production"]
|
|
||||||
if ENV["DEV_EXCEPTIONS"]
|
|
||||||
config.environments << "development"
|
|
||||||
end
|
|
||||||
config.silence_ready = true
|
|
||||||
config.tags = { process: ENV.fetch("PROC_NAME", nil) }
|
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|||||||
@@ -50,8 +50,8 @@ module Postal
|
|||||||
rescue StandardError => e
|
rescue StandardError => e
|
||||||
raise if Rails.env.development?
|
raise if Rails.env.development?
|
||||||
|
|
||||||
if defined?(Raven)
|
if defined?(Sentry)
|
||||||
Raven.capture_exception(e)
|
Sentry.capture_exception(e)
|
||||||
end
|
end
|
||||||
@actioned = false
|
@actioned = false
|
||||||
@tracked_links = 0
|
@tracked_links = 0
|
||||||
|
|||||||
@@ -197,8 +197,8 @@ module Postal
|
|||||||
safe_rset
|
safe_rset
|
||||||
rescue StandardError => e
|
rescue StandardError => e
|
||||||
log "#{e.class}: #{e.message}"
|
log "#{e.class}: #{e.message}"
|
||||||
if defined?(Raven)
|
if defined?(Sentry)
|
||||||
Raven.capture_exception(e, extra: { log_id: @log_id, server_id: message.server.id, message_id: message.id })
|
Sentry.capture_exception(e, extra: { log_id: @log_id, server_id: message.server.id, message_id: message.id })
|
||||||
end
|
end
|
||||||
result.type = "SoftFail"
|
result.type = "SoftFail"
|
||||||
result.retry = true
|
result.retry = true
|
||||||
|
|||||||
@@ -113,8 +113,8 @@ module Postal
|
|||||||
monitor.value = client
|
monitor.value = client
|
||||||
rescue StandardError => e
|
rescue StandardError => e
|
||||||
# If something goes wrong, log as appropriate and disconnect the client
|
# If something goes wrong, log as appropriate and disconnect the client
|
||||||
if defined?(Raven)
|
if defined?(Sentry)
|
||||||
Raven.capture_exception(e, extra: { log_id: begin
|
Sentry.capture_exception(e, extra: { log_id: begin
|
||||||
client.id
|
client.id
|
||||||
rescue StandardError
|
rescue StandardError
|
||||||
nil
|
nil
|
||||||
@@ -227,8 +227,8 @@ module Postal
|
|||||||
rescue StandardError => e
|
rescue StandardError => e
|
||||||
# Something went wrong, log as appropriate
|
# Something went wrong, log as appropriate
|
||||||
client_id = client ? client.id : "------"
|
client_id = client ? client.id : "------"
|
||||||
if defined?(Raven)
|
if defined?(Sentry)
|
||||||
Raven.capture_exception(e, extra: { log_id: begin
|
Sentry.capture_exception(e, extra: { log_id: begin
|
||||||
client.id
|
client.id
|
||||||
rescue StandardError
|
rescue StandardError
|
||||||
nil
|
nil
|
||||||
|
|||||||
@@ -44,7 +44,7 @@ module Postal
|
|||||||
rescue StandardError => e
|
rescue StandardError => e
|
||||||
# Somethign else went wrong. We don't want to stop the image loading though because
|
# Somethign else went wrong. We don't want to stop the image loading though because
|
||||||
# this is our problem. Log this exception though.
|
# this is our problem. Log this exception though.
|
||||||
Raven.capture_exception(e) if defined?(Raven)
|
Sentry.capture_exception(e) if defined?(Sentry)
|
||||||
end
|
end
|
||||||
|
|
||||||
source_image = request.params["src"]
|
source_image = request.params["src"]
|
||||||
|
|||||||
@@ -69,8 +69,8 @@ module Postal
|
|||||||
e.backtrace.each do |line|
|
e.backtrace.each do |line|
|
||||||
logger.warn "[#{message['id']}] " + line
|
logger.warn "[#{message['id']}] " + line
|
||||||
end
|
end
|
||||||
if defined?(Raven)
|
if defined?(Sentry)
|
||||||
Raven.capture_exception(e, extra: { job_id: message["id"] })
|
Sentry.capture_exception(e, extra: { job_id: message["id"] })
|
||||||
end
|
end
|
||||||
ensure
|
ensure
|
||||||
logger.info "[#{message['id']}] Finished processing \e[34m#{message['class_name']}\e[0m job in #{Time.now - start_time}s"
|
logger.info "[#{message['id']}] Finished processing \e[34m#{message['class_name']}\e[0m job in #{Time.now - start_time}s"
|
||||||
|
|||||||
المرجع في مشكلة جديدة
حظر مستخدم