Gemfile 6.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284
  1. # Copyright (C) 2012-2025 Zammad Foundation, https://zammad-foundation.org/
  2. source 'https://rubygems.org'
  3. # core - base
  4. ruby '3.3.7'
  5. gem 'rails', '~> 7.2.0'
  6. gem 'rake'
  7. # core - rails additions
  8. gem 'activerecord-import'
  9. gem 'activerecord-session_store'
  10. gem 'bootsnap', require: false
  11. gem 'json'
  12. gem 'parallel'
  13. # core - application servers
  14. gem 'puma', group: :puma
  15. # core - supported ORMs
  16. gem 'mysql2', group: :mysql
  17. gem 'pg', '~> 1.5', '>= 1.5.4', group: :postgres
  18. # core - asynchrous task execution
  19. gem 'daemons'
  20. gem 'delayed_job_active_record'
  21. # core - command line interface
  22. gem 'thor'
  23. # core - websocket
  24. gem 'em-websocket'
  25. gem 'eventmachine'
  26. gem 'hiredis'
  27. # version restriction from actioncable-6.1.6.1/lib/action_cable/subscription_adapter/redis.rb
  28. # - check after rails update
  29. gem 'redis', '>= 3', '< 5'
  30. # core - password security
  31. gem 'argon2'
  32. # core - state machine
  33. gem 'aasm'
  34. # core - authorization
  35. gem 'pundit'
  36. # core - graphql handling
  37. gem 'graphql'
  38. gem 'graphql-batch', require: 'graphql/batch'
  39. gem 'graphql-fragment_cache'
  40. # core - image processing
  41. gem 'rszr'
  42. # core - use same timezone data on any host
  43. gem 'tzinfo-data'
  44. # performance - Memcached
  45. gem 'dalli', require: false
  46. # Vite is required by the web server
  47. gem 'vite_rails'
  48. # asset handling - config.assets for pipeline
  49. gem 'sprockets-rails'
  50. # Workaround
  51. # Explicitly specify nokogiri, even though it is an internal Rails dependency
  52. # to work around issues with precompiled versions not running on RHEL 8 any more.
  53. # See https://github.com/sparklemotion/nokogiri/issues/3399.
  54. # Consider removing this again after CentOS 8 support was dropped.
  55. gem 'nokogiri', force_ruby_platform: true
  56. # Only load gems for asset compilation if they are needed to avoid
  57. # having unneeded runtime dependencies like NodeJS.
  58. group :assets do
  59. # asset handling - javascript execution for e.g. linux
  60. gem 'execjs', require: false
  61. # asset handling - coffee-script
  62. gem 'coffee-rails', require: false
  63. # asset handling - frontend templating
  64. gem 'eco', require: false
  65. # asset handling - SASS
  66. # We cannot use sassc-rails, as it can lead to crashes on modern platforms like CentOS 9.
  67. # See https://jcmaciel.com/apple-silicon-ruby-on-rails-crash-segfault-sassc/
  68. # https://github.com/sass/sassc-ruby/issues/197
  69. # Pin to v5 which does not use sassc internally.
  70. gem 'sass-rails', '~> 5', require: false
  71. # asset handling - pipeline
  72. gem 'sprockets', '~> 3.7.2', require: false
  73. gem 'terser', require: false
  74. gem 'autoprefixer-rails', require: false
  75. end
  76. # authentication - provider
  77. gem 'doorkeeper'
  78. gem 'oauth2'
  79. # authentication - two factor
  80. gem 'rotp', require: false
  81. gem 'webauthn', require: false
  82. # authentication - third party
  83. gem 'omniauth-rails_csrf_protection'
  84. # authentication - third party providers
  85. gem 'omniauth-facebook'
  86. gem 'omniauth-github'
  87. gem 'omniauth-gitlab'
  88. gem 'omniauth-google-oauth2'
  89. gem 'omniauth-linkedin-oauth2'
  90. gem 'omniauth-microsoft-office365'
  91. gem 'omniauth_openid_connect'
  92. gem 'omniauth-saml'
  93. gem 'omniauth-twitter'
  94. gem 'omniauth-weibo-oauth2', git: 'https://github.com/zammad-deps/omniauth-weibo-oauth2', branch: 'unpin-dependencies'
  95. # Rate limiting
  96. gem 'rack-attack'
  97. # channels
  98. gem 'koala'
  99. gem 'telegram-bot-ruby'
  100. gem 'twitter', '~> 7'
  101. gem 'whatsapp_sdk'
  102. # channels - email additions
  103. gem 'email_address'
  104. gem 'htmlentities'
  105. gem 'mail'
  106. gem 'mime-types'
  107. gem 'rchardet', '>= 1.8.0'
  108. # networking libraries were removed from stdlib in ruby 3.1..
  109. gem 'net-http', require: false
  110. gem 'net-imap', require: false
  111. gem 'net-pop', require: false
  112. gem 'net-smtp', require: false
  113. # convert from punycode ACE strings to unicode UTF-8 strings and visa versa
  114. gem 'simpleidn'
  115. # feature - business hours
  116. gem 'biz'
  117. # feature - signature diffing
  118. gem 'diffy'
  119. # feature - excel output
  120. gem 'write_xlsx', require: false
  121. # feature - csv import/export
  122. gem 'csv', require: false
  123. # feature - device logging
  124. gem 'browser'
  125. # feature - iCal export
  126. gem 'icalendar'
  127. gem 'icalendar-recurrence'
  128. # feature - phone number formatting
  129. gem 'telephone_number'
  130. # feature - SMS
  131. gem 'messagebird-rest'
  132. gem 'twilio-ruby', require: false
  133. # feature - ordering
  134. gem 'acts_as_list'
  135. # integrations
  136. gem 'clearbit', require: false
  137. gem 'net-ldap'
  138. gem 'slack-notifier', require: false
  139. gem 'zendesk_api', require: false
  140. # integrations - exchange
  141. gem 'autodiscover', git: 'https://github.com/zammad-deps/autodiscover', require: false
  142. gem 'viewpoint', require: false
  143. # integrations - S/MIME
  144. gem 'openssl'
  145. # Translation sync
  146. gem 'byk', require: false
  147. gem 'PoParser', require: false
  148. # Simple storage
  149. gem 'aws-sdk-s3', require: false
  150. # Debugging and profiling
  151. gem 'byebug'
  152. gem 'pry-byebug'
  153. gem 'pry-rails'
  154. gem 'pry-remote'
  155. gem 'pry-rescue'
  156. gem 'pry-stack_explorer'
  157. gem 'pry-theme'
  158. # monitoring / system report
  159. gem 'macaddr'
  160. # watch file changes (also relevant for graphql generation in context of CDs)
  161. gem 'listen'
  162. # language detection
  163. gem 'cld'
  164. # CLDR wrapper for i18n and l10n
  165. gem 'twitter_cldr'
  166. # Gems used only for develop/test and not required
  167. # in production environments by default.
  168. group :development, :test do
  169. # test frameworks
  170. gem 'rails-controller-testing'
  171. gem 'rspec-rails'
  172. gem 'rspec-retry'
  173. gem 'shoulda-matchers'
  174. gem 'test-unit'
  175. # for testing Pundit authorisation policies in RSpec
  176. gem 'pundit-matchers'
  177. # UI tests w/ Selenium
  178. gem 'capybara'
  179. gem 'selenium-webdriver'
  180. # code QA
  181. gem 'brakeman', require: false
  182. gem 'overcommit'
  183. gem 'rubocop'
  184. gem 'rubocop-capybara'
  185. gem 'rubocop-factory_bot'
  186. gem 'rubocop-faker'
  187. gem 'rubocop-graphql'
  188. gem 'rubocop-inflector'
  189. gem 'rubocop-performance'
  190. gem 'rubocop-rails'
  191. gem 'rubocop-rspec'
  192. gem 'rubocop-rspec_rails'
  193. # generate random test data
  194. gem 'factory_bot_rails'
  195. gem 'faker'
  196. # mock http calls
  197. gem 'webmock'
  198. # record and replay TCP/HTTP transactions
  199. gem 'tcr', require: false
  200. gem 'vcr', require: false
  201. # handle deprecations in core and addons
  202. gem 'deprecation_toolkit'
  203. # image comparison in tests
  204. gem 'chunky_png'
  205. # Slack helper for testing
  206. gem 'slack-ruby-client', require: false
  207. # self-signed localhost certificates for puma / capybara
  208. gem 'localhost'
  209. # Keycloak admin tool for setting up SAML auth tests
  210. gem 'ruby-keycloak-admin'
  211. # Debugging and profiling
  212. gem 'pry-doc' # This gem is very large, so don't include it in production.
  213. end
  214. # To permanently extend Zammad with additional gems, you can specify them in Gemfile.local.
  215. Dir['Gemfile.local*'].each do |file|
  216. eval_gemfile file
  217. end