Gemfile 5.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247
  1. # Copyright (C) 2012-2022 Zammad Foundation, https://zammad-foundation.org/
  2. source 'https://rubygems.org'
  3. # core - base
  4. ruby '3.0.4'
  5. gem 'rails', '~> 6.1.0'
  6. # core - rails additions
  7. gem 'activerecord-import'
  8. gem 'activerecord-session_store'
  9. gem 'bootsnap', require: false
  10. gem 'composite_primary_keys'
  11. # TODO: lift version restriction once https://github.com/flori/json/issues/495 is solved.
  12. gem 'json', '~> 2.5.1'
  13. # core - application servers
  14. gem 'puma', '~> 4', group: :puma
  15. gem 'unicorn', group: :unicorn
  16. # core - supported ORMs
  17. gem 'activerecord-nulldb-adapter', group: :nulldb
  18. gem 'mysql2', group: :mysql
  19. gem 'pg', '~> 1.2.0', group: :postgres
  20. # core - asynchrous task execution
  21. gem 'daemons'
  22. gem 'delayed_job_active_record'
  23. # core - websocket
  24. gem 'em-websocket'
  25. gem 'eventmachine'
  26. gem 'hiredis', require: false
  27. gem 'redis', require: false
  28. # core - password security
  29. gem 'argon2'
  30. # core - state machine
  31. gem 'aasm'
  32. # core - authorization
  33. gem 'pundit'
  34. # core - graphql handling
  35. gem 'graphql'
  36. gem 'graphql-batch', require: 'graphql/batch'
  37. # core - image processing
  38. gem 'rszr'
  39. # performance - Memcached
  40. gem 'dalli', require: false
  41. # Vite is required by the web server
  42. gem 'vite_rails'
  43. # Only load gems for asset compilation if they are needed to avoid
  44. # having unneeded runtime dependencies like NodeJS.
  45. group :assets do
  46. # asset handling - javascript execution for e.g. linux
  47. gem 'execjs', require: false
  48. # asset handling - coffee-script
  49. gem 'coffee-rails', require: false
  50. # asset handling - frontend templating
  51. gem 'eco', require: false
  52. # asset handling - SASS
  53. gem 'sassc-rails', require: false
  54. # asset handling - pipeline
  55. gem 'sprockets', '~> 3.7.2', require: false
  56. gem 'uglifier', require: false
  57. gem 'autoprefixer-rails', require: false
  58. end
  59. # Don't use mini_racer any more for asset compilation.
  60. # Instead, use an external node.js binary.
  61. group :mini_racer, optional: true do
  62. gem 'libv8'
  63. gem 'mini_racer', '0.2.9' # Newer versions require libv8-node instead which does not compile on older platforms.
  64. end
  65. # authentication - provider
  66. gem 'doorkeeper'
  67. gem 'oauth2'
  68. # authentication - third party
  69. gem 'omniauth-rails_csrf_protection'
  70. # authentication - third party providers
  71. gem 'omniauth-facebook'
  72. gem 'omniauth-github'
  73. gem 'omniauth-gitlab'
  74. gem 'omniauth-google-oauth2'
  75. gem 'omniauth-linkedin-oauth2'
  76. gem 'omniauth-microsoft-office365'
  77. gem 'omniauth-saml'
  78. gem 'omniauth-twitter'
  79. gem 'omniauth-weibo-oauth2'
  80. # Rate limiting
  81. gem 'rack-attack'
  82. # channels
  83. gem 'gmail_xoauth'
  84. gem 'koala'
  85. # TODO: remove git information after https://github.com/bennesp/telegramAPI/pull/8 is merged
  86. gem 'telegramAPI', git: 'https://github.com/zammad-deps/telegramAPI', branch: 'uri-escape-warning'
  87. gem 'twitter'
  88. # channels - email additions
  89. gem 'htmlentities'
  90. # TODO: remove git information once v2.8 is released and works with Zammad
  91. gem 'mail', git: 'https://github.com/zammad-deps/mail', branch: '2-7-stable'
  92. gem 'mime-types'
  93. gem 'rchardet', '>= 1.8.0'
  94. gem 'valid_email2'
  95. # feature - business hours
  96. gem 'biz'
  97. # feature - signature diffing
  98. gem 'diffy'
  99. # feature - excel output
  100. gem 'writeexcel', require: false
  101. # feature - csv import/export
  102. gem 'csv', require: false
  103. # feature - device logging
  104. gem 'browser'
  105. # feature - iCal export
  106. gem 'icalendar'
  107. gem 'icalendar-recurrence'
  108. # feature - phone number formatting
  109. gem 'telephone_number'
  110. # feature - SMS
  111. gem 'messagebird-rest'
  112. gem 'twilio-ruby', require: false
  113. # feature - ordering
  114. gem 'acts_as_list'
  115. # integrations
  116. gem 'clearbit', require: false
  117. gem 'net-ldap'
  118. gem 'slack-notifier', require: false
  119. gem 'zendesk_api', require: false
  120. # integrations - exchange
  121. gem 'autodiscover', git: 'https://github.com/zammad-deps/autodiscover', require: false
  122. gem 'viewpoint', require: false
  123. # integrations - S/MIME
  124. gem 'openssl'
  125. # Translation sync
  126. gem 'PoParser', require: false
  127. # Gems used only for develop/test and not required
  128. # in production environments by default.
  129. group :development, :test do
  130. # app boottime improvement
  131. gem 'spring'
  132. # debugging
  133. gem 'byebug'
  134. gem 'pry-rails'
  135. gem 'pry-remote'
  136. gem 'pry-rescue'
  137. gem 'pry-stack_explorer'
  138. # test frameworks
  139. gem 'rails-controller-testing'
  140. gem 'rspec-rails'
  141. gem 'rspec-retry'
  142. gem 'shoulda-matchers'
  143. gem 'test-unit'
  144. # for testing Pundit authorisation policies in RSpec
  145. gem 'pundit-matchers'
  146. # UI tests w/ Selenium
  147. gem 'capybara'
  148. gem 'selenium-webdriver'
  149. # livereload on template changes (html, js, css)
  150. gem 'guard', require: false
  151. gem 'guard-livereload', require: false
  152. gem 'rack-livereload', require: false
  153. gem 'rb-fsevent', require: false
  154. # auto symlinking
  155. gem 'guard-symlink', require: false
  156. # code QA
  157. gem 'brakeman', require: false
  158. gem 'overcommit'
  159. gem 'rubocop'
  160. gem 'rubocop-faker'
  161. gem 'rubocop-graphql'
  162. gem 'rubocop-inflector'
  163. gem 'rubocop-performance'
  164. gem 'rubocop-rails'
  165. gem 'rubocop-rspec'
  166. # generate random test data
  167. gem 'factory_bot_rails'
  168. gem 'faker'
  169. # mock http calls
  170. gem 'webmock'
  171. # record and replay TCP/HTTP transactions
  172. gem 'tcr', require: false
  173. gem 'vcr'
  174. # handle deprecations in core and addons
  175. gem 'deprecation_toolkit'
  176. # image comparison in tests
  177. gem 'chunky_png'
  178. # refresh ENVs in CI environment
  179. gem 'dotenv', require: false
  180. # Slack helper for testing
  181. gem 'slack-ruby-client', require: false
  182. end
  183. # Want to extend Zammad with additional gems?
  184. # ZAMMAD USERS: Specify them in Gemfile.local
  185. # (That way, you can customize the Gemfile
  186. # without having your changes overwritten during upgrades.)
  187. # ZAMMAD DEVS: Consult the internal wiki
  188. # (or else risk pushing unwanted changes to Gemfile.lock!)
  189. # https://git.zammad.com/zammad/zammad/wikis/Tips#user-content-customizing-the-gemfile
  190. eval_gemfile 'Gemfile.local' if File.exist?('Gemfile.local')