1 # frozen_string_literal: true
3 source "https://rubygems.org"
4 # if there is a super emergency and rubygems is playing up, try
5 #source 'http://production.cf.rubygems.org'
7 gem "bootsnap", require: false, platform: :mri
9 gem "actionmailer", "< 7.1"
10 gem "actionpack", "< 7.1"
11 gem "actionview", "< 7.1"
12 gem "activemodel", "< 7.1"
13 gem "activerecord", "< 7.1"
14 gem "activesupport", "< 7.1"
15 gem "railties", "< 7.1"
20 # TODO: At the moment Discourse does not work with Sprockets 4, we would need to correct internals
21 # We intend to drop sprockets rather than upgrade to 4.x
22 gem "sprockets", git: "https://github.com/rails/sprockets", branch: "3.x"
24 # this will eventually be added to rails,
25 # allows us to precompile all our templates in the unicorn master
26 gem "actionview_precompiler", require: false
28 gem "discourse-seed-fu"
36 # This is explicitly used by Sidekiq and is an optional dependency.
37 # We tell Sidekiq to use the namespace "sidekiq" which triggers this
38 # gem to be used. There is no explicit dependency in sidekiq cause
39 # redis namespace support is optional
40 # We already namespace stuff in DiscourseRedis, so we should consider
41 # just using a single implementation in core vs having 2 namespace implementations
44 # NOTE: AM serializer gets a lot slower with recent updates
45 # we used an old branch which is the fastest one out there
46 # are long term goal here is to fork this gem so we have a
47 # better maintained living fork
48 gem "active_model_serializers", "~> 0.8.3"
50 gem "http_accept_language", require: false
52 gem "discourse-fonts", require: "discourse_fonts"
60 gem "aws-sdk-s3", require: false
61 gem "aws-sdk-sns", require: false
62 gem "excon", require: false
63 gem "unf", require: false
65 gem "email_reply_trimmer"
72 gem "css_parser", require: false
75 gem "omniauth-facebook"
76 gem "omniauth-twitter"
79 gem "omniauth-oauth2", require: false
81 gem "omniauth-google-oauth2"
87 gem "pry-rails", require: false
88 gem "pry-byebug", require: false
89 gem "rtlcss", require: false
92 gem "thor", require: false
93 gem "diffy", require: false
98 gem "execjs", require: false
101 gem "highline", require: false
105 gem "rack-protection" # security
106 gem "cbor", require: false
107 gem "cose", require: false
111 gem "net-smtp", require: false
112 gem "net-imap", require: false
113 gem "net-pop", require: false
114 gem "digest", require: false
116 # Gems used only for assets and not required in production environments by default.
117 # Allow everywhere for now cause we are allowing asset debugging in production
123 gem "capybara", require: false
124 gem "webmock", require: false
125 gem "fakeweb", require: false
126 gem "minitest", require: false
127 gem "simplecov", require: false
128 gem "selenium-webdriver", "~> 4.14", require: false
129 gem "selenium-devtools", require: false
131 gem "rails-dom-testing", require: false
132 gem "minio_runner", require: false
135 group :test, :development do
137 gem "listen", require: false
138 gem "certified", require: false
139 gem "fabrication", require: false
140 gem "mocha", require: false
142 gem "rb-fsevent", require: RUBY_PLATFORM =~ /darwin/i ? "rb-fsevent" : false
146 gem "shoulda-matchers", require: false
147 gem "rspec-html-matchers"
148 gem "byebug", require: ENV["RM_INFO"].nil?, platform: :mri
149 gem "rubocop-discourse", require: false
157 gem "syntax_tree-disable_ternary"
160 group :development do
161 gem "ruby-prof", require: false, platform: :mri
162 gem "bullet", require: !!ENV["BULLET"]
163 gem "better_errors", platform: :mri, require: !!ENV["BETTER_ERRORS"]
164 gem "binding_of_caller"
169 if ENV["ALLOW_DEV_POPULATE"] == "1"
170 gem "discourse_dev_assets"
171 gem "faker", "~> 2.16"
173 group :development, :test do
174 gem "discourse_dev_assets"
175 gem "faker", "~> 2.16"
179 # this is an optional gem, it provides a high performance replacement
180 # to String#blank? a method that is called quite frequently in current
181 # ActiveRecord, this may change in the future
182 gem "fast_blank", platform: :ruby
184 # this provides a very efficient lru cache
187 gem "htmlentities", require: false
189 # IMPORTANT: mini profiler monkey patches, so it better be required last
190 # If you want to amend mini profiler to do the monkey patches in the railties
191 # we are open to it. by deferring require to the initializer we can configure discourse installs without it
193 gem "rack-mini-profiler", require: ["enable_rails_patches"]
195 gem "unicorn", require: false, platform: :ruby
196 gem "puma", require: false
198 gem "rbtrace", require: false, platform: :mri
200 # required for feed importing and embedding
201 gem "ruby-readability", require: false
203 # rss gem is a bundled gem from Ruby 3 onwards
204 gem "rss", require: false
206 gem "stackprof", require: false, platform: :mri
207 gem "memory_profiler", require: false, platform: :mri
209 gem "cppjieba_rb", require: false
211 gem "lograge", require: false
212 gem "logstash-event", require: false
213 gem "logstash-logger", require: false
216 # A fork of sassc with dart-sass support
219 gem "rotp", require: false
223 gem "rubyzip", require: false
225 gem "sshkey", require: false
227 gem "rchardet", require: false
228 gem "lz4-ruby", require: false, platform: :ruby
232 if ENV["IMPORT"] == "1"
236 # NOTE: in import mode the version of sqlite can matter a lot, so we stick it to a specific one
237 gem "sqlite3", "~> 1.3", ">= 1.3.13"
238 gem "ruby-bbcode-to-md", git: "https://github.com/nlalonde/ruby-bbcode-to-md"
239 gem "reverse_markdown"
243 gem "parallel", require: false
246 group :generic_import, optional: true do
252 gem "colored2", require: false
255 gem "rails_failover", require: false
260 # workaround for faraday-net_http, see
261 # https://github.com/ruby/net-imap/issues/16#issuecomment-803086765
264 # Workaround until Ruby ships with cgi version 0.3.6 or higher.
265 gem "cgi", ">= 0.3.6", require: false
268 gem "csv", require: false
270 # TODO: Can be removed once we upgrade to Rails 7.1