Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
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