Skip to content

Commit

Permalink
Add generator for initializer generation (#2286)
Browse files Browse the repository at this point in the history
  • Loading branch information
st0012 committed Apr 15, 2024
1 parent 0b318c0 commit 02538e4
Show file tree
Hide file tree
Showing 3 changed files with 75 additions and 0 deletions.
8 changes: 8 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,3 +1,11 @@
## Unreleased

### Features

- Add generator for initializer generation ([#2286](https://github.com/getsentry/sentry-ruby/pull/2286))

Rails users will be able to use `bin/rails generate sentry` to generate their `config/initializers/sentry.rb` file.

## 5.17.3

### Features
Expand Down
19 changes: 19 additions & 0 deletions sentry-rails/lib/generators/sentry_generator.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
require "rails/generators/base"

class SentryGenerator < ::Rails::Generators::Base
class_option :dsn, type: :string, desc: "Sentry DSN"

def copy_initializer_file
dsn = options[:dsn] ? "'#{options[:dsn]}'" : "ENV['SENTRY_DSN']"

create_file "config/initializers/sentry.rb", <<~RUBY
# frozen_string_literal: true
Sentry.init do |config|
config.breadcrumbs_logger = [:active_support_logger]
config.dsn = #{dsn}
config.enable_tracing = true
end
RUBY
end
end
48 changes: 48 additions & 0 deletions sentry-rails/spec/sentry/generator_spec.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,48 @@
# frozen_string_literal: true

require "fileutils"
require "rails/generators/test_case"
require "generators/sentry_generator"

RSpec.describe SentryGenerator do
include ::Rails::Generators::Testing::Behaviour
include FileUtils
self.destination File.expand_path('../../tmp', __dir__)
self.generator_class = described_class

before do
prepare_destination
end

it "creates a initializer file" do
run_generator

file = File.join(destination_root, "config/initializers/sentry.rb")
expect(File).to exist(file)
content = File.read(file)
expect(content).to include(<<~RUBY)
Sentry.init do |config|
config.breadcrumbs_logger = [:active_support_logger]
config.dsn = ENV['SENTRY_DSN']
config.enable_tracing = true
end
RUBY
end

context "with a DSN option" do
it "creates a initializer file with the DSN" do
run_generator %w[--dsn foobarbaz]

file = File.join(destination_root, "config/initializers/sentry.rb")
expect(File).to exist(file)
content = File.read(file)
expect(content).to include(<<~RUBY)
Sentry.init do |config|
config.breadcrumbs_logger = [:active_support_logger]
config.dsn = 'foobarbaz'
config.enable_tracing = true
end
RUBY
end
end
end

0 comments on commit 02538e4

Please sign in to comment.