nixpkgs mirror (for testing)
github.com/NixOS/nixpkgs
nix
1# frozen_string_literal: true
2
3source "https://rubygems.org"
4# if there is a super emergency and rubygems is playing up, try
5#source 'http://production.cf.rubygems.org'
6
7gem "bootsnap", require: false, platform: :mri
8
9def rails_master?
10 ENV["RAILS_MASTER"] == "1"
11end
12
13if rails_master?
14 gem "arel", git: "https://github.com/rails/arel.git"
15 gem "rails", git: "https://github.com/rails/rails.git"
16else
17 # NOTE: Until rubygems gives us optional dependencies we are stuck with this needing to be explicit
18 # this allows us to include the bits of rails we use without pieces we do not.
19 #
20 # To issue a rails update bump the version number here
21 rails_version = "7.0.4.3"
22 gem "actionmailer", rails_version
23 gem "actionpack", rails_version
24 gem "actionview", rails_version
25 gem "activemodel", rails_version
26 gem "activerecord", rails_version
27 gem "activesupport", rails_version
28 gem "railties", rails_version
29 gem "sprockets-rails"
30end
31
32gem "json"
33
34# TODO: At the moment Discourse does not work with Sprockets 4, we would need to correct internals
35# We intend to drop sprockets rather than upgrade to 4.x
36gem "sprockets", git: "https://github.com/rails/sprockets", branch: "3.x"
37
38# this will eventually be added to rails,
39# allows us to precompile all our templates in the unicorn master
40gem "actionview_precompiler", require: false
41
42gem "discourse-seed-fu"
43
44gem "mail"
45gem "mini_mime"
46gem "mini_suffix"
47
48gem "redis"
49
50# This is explicitly used by Sidekiq and is an optional dependency.
51# We tell Sidekiq to use the namespace "sidekiq" which triggers this
52# gem to be used. There is no explicit dependency in sidekiq cause
53# redis namespace support is optional
54# We already namespace stuff in DiscourseRedis, so we should consider
55# just using a single implementation in core vs having 2 namespace implementations
56gem "redis-namespace"
57
58# NOTE: AM serializer gets a lot slower with recent updates
59# we used an old branch which is the fastest one out there
60# are long term goal here is to fork this gem so we have a
61# better maintained living fork
62gem "active_model_serializers", "~> 0.8.3"
63
64gem "http_accept_language", require: false
65
66gem "discourse-fonts", require: "discourse_fonts"
67
68gem "message_bus"
69
70gem "rails_multisite"
71
72gem "fast_xs", platform: :ruby
73
74gem "fastimage"
75
76gem "aws-sdk-s3", require: false
77gem "aws-sdk-sns", require: false
78gem "excon", require: false
79gem "unf", require: false
80
81gem "email_reply_trimmer"
82
83gem "image_optim"
84gem "multi_json"
85gem "mustache"
86gem "nokogiri"
87gem "loofah"
88gem "css_parser", require: false
89
90gem "omniauth"
91gem "omniauth-facebook"
92gem "omniauth-twitter"
93gem "omniauth-github"
94
95gem "omniauth-oauth2", require: false
96
97gem "omniauth-google-oauth2"
98
99# pending: https://github.com/ohler55/oj/issues/789
100gem "oj", "3.13.14"
101
102gem "pg"
103gem "mini_sql"
104gem "pry-rails", require: false
105gem "pry-byebug", require: false
106gem "rtlcss", require: false
107gem "rake"
108
109gem "thor", require: false
110gem "diffy", require: false
111gem "rinku"
112gem "sidekiq"
113gem "mini_scheduler"
114
115gem "execjs", require: false
116gem "mini_racer"
117
118gem "highline", require: false
119
120gem "rack"
121
122gem "rack-protection" # security
123gem "cbor", require: false
124gem "cose", require: false
125gem "addressable"
126gem "json_schemer"
127
128gem "net-smtp", require: false
129gem "net-imap", require: false
130gem "net-pop", require: false
131gem "digest", require: false
132
133# Gems used only for assets and not required in production environments by default.
134# Allow everywhere for now cause we are allowing asset debugging in production
135group :assets do
136 gem "uglifier"
137end
138
139group :test do
140 gem "capybara", require: false
141 gem "webmock", require: false
142 gem "fakeweb", require: false
143 gem "minitest", require: false
144 gem "simplecov", require: false
145 gem "selenium-webdriver", require: false
146 gem "test-prof"
147 gem "webdrivers", require: false
148end
149
150group :test, :development do
151 gem "rspec"
152 gem "listen", require: false
153 gem "certified", require: false
154 gem "fabrication", require: false
155 gem "mocha", require: false
156
157 gem "rb-fsevent", require: RUBY_PLATFORM =~ /darwin/i ? "rb-fsevent" : false
158
159 gem "rspec-rails"
160
161 gem "shoulda-matchers", require: false
162 gem "rspec-html-matchers"
163 gem "byebug", require: ENV["RM_INFO"].nil?, platform: :mri
164 gem "rubocop-discourse", require: false
165 gem "parallel_tests"
166
167 gem "rswag-specs"
168
169 gem "annotate"
170
171 gem "syntax_tree"
172 gem "syntax_tree-disable_ternary"
173end
174
175group :development do
176 gem "ruby-prof", require: false, platform: :mri
177 gem "bullet", require: !!ENV["BULLET"]
178 gem "better_errors", platform: :mri, require: !!ENV["BETTER_ERRORS"]
179 gem "binding_of_caller"
180 gem "yaml-lint"
181 gem "yard"
182end
183
184if ENV["ALLOW_DEV_POPULATE"] == "1"
185 gem "discourse_dev_assets"
186 gem "faker", "~> 2.16"
187else
188 group :development, :test do
189 gem "discourse_dev_assets"
190 gem "faker", "~> 2.16"
191 end
192end
193
194# this is an optional gem, it provides a high performance replacement
195# to String#blank? a method that is called quite frequently in current
196# ActiveRecord, this may change in the future
197gem "fast_blank", platform: :ruby
198
199# this provides a very efficient lru cache
200gem "lru_redux"
201
202gem "htmlentities", require: false
203
204# IMPORTANT: mini profiler monkey patches, so it better be required last
205# If you want to amend mini profiler to do the monkey patches in the railties
206# we are open to it. by deferring require to the initializer we can configure discourse installs without it
207
208gem "rack-mini-profiler", require: ["enable_rails_patches"]
209
210gem "unicorn", require: false, platform: :ruby
211gem "puma", require: false
212gem "rbtrace", require: false, platform: :mri
213gem "gc_tracer", require: false, platform: :mri
214
215# required for feed importing and embedding
216gem "ruby-readability", require: false
217
218# rss gem is a bundled gem from Ruby 3 onwards
219gem "rss", require: false
220
221gem "stackprof", require: false, platform: :mri
222gem "memory_profiler", require: false, platform: :mri
223
224gem "cppjieba_rb", require: false
225
226gem "lograge", require: false
227gem "logstash-event", require: false
228gem "logstash-logger", require: false
229gem "logster"
230
231# These are forks of sassc and sassc-rails with dart-sass support
232gem "dartsass-ruby"
233gem "dartsass-sprockets"
234
235gem "rotp", require: false
236
237gem "rqrcode"
238
239gem "rubyzip", require: false
240
241gem "sshkey", require: false
242
243gem "rchardet", require: false
244gem "lz4-ruby", require: false, platform: :ruby
245
246gem "sanitize"
247
248if ENV["IMPORT"] == "1"
249 gem "mysql2"
250 gem "redcarpet"
251
252 # NOTE: in import mode the version of sqlite can matter a lot, so we stick it to a specific one
253 gem "sqlite3", "~> 1.3", ">= 1.3.13"
254 gem "ruby-bbcode-to-md", git: "https://github.com/nlalonde/ruby-bbcode-to-md"
255 gem "reverse_markdown"
256 gem "tiny_tds"
257 gem "csv"
258
259 gem "parallel", require: false
260end
261
262gem "web-push"
263gem "colored2", require: false
264gem "maxminddb"
265
266gem "rails_failover", require: false
267
268gem "faraday"
269gem "faraday-retry"
270
271# workaround for faraday-net_http, see
272# https://github.com/ruby/net-imap/issues/16#issuecomment-803086765
273gem "net-http"
274
275# workaround for prometheus-client
276gem "webrick", require: false
277
278# Workaround until Ruby ships with cgi version 0.3.6 or higher.
279gem "cgi", ">= 0.3.6", require: false
280
281gem "tzinfo-data"