Skip to content

Commit 2f30898

Browse files
authored
feat: let the initializer choose whether save or not visits. (#20)
1 parent 35108cf commit 2f30898

File tree

4 files changed

+24
-0
lines changed

4 files changed

+24
-0
lines changed

app/models/rails_url_shortener/visit.rb

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,7 @@ class Visit < ApplicationRecord
3535
# Return boolean
3636
# rubocop:disable Metrics/AbcSize
3737
def self.parse_and_save(url, request)
38+
return false if !RailsUrlShortener.save_visits
3839
browser(request)
3940
return false if !RailsUrlShortener.save_bots_visits && @browser.bot?
4041

lib/generators/rails_url_shortener/templates/initializer.rb

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,3 +12,4 @@
1212
RailsUrlShortener.key_length = 6 # Key length for random generator
1313
RailsUrlShortener.minimum_key_length = 3 # minimum permited for a key
1414
RailsUrlShortener.save_bots_visits = false # if save bots visits
15+
RailsUrlShortener.save_visits = true # if save visits

lib/rails_url_shortener.rb

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,8 @@ module RailsUrlShortener
4040
# so if you put this configuration like false could lose some visits to your link
4141
# by default saving all requests
4242
mattr_accessor :save_bots_visits, default: true
43+
44+
mattr_accessor :save_visits, default: true
4345
end
4446

4547
ActiveSupport.on_load(:active_record) do

test/models/rails_url_shortener/visit_test.rb

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -74,6 +74,26 @@ class VisitTest < ActiveSupport::TestCase
7474
assert_no_enqueued_jobs do
7575
assert_not Visit.parse_and_save(rails_url_shortener_urls(:one), request)
7676
end
77+
78+
RailsUrlShortener.save_bots_visits = true
79+
end
80+
81+
test "don't save any" do
82+
# set the configuration
83+
RailsUrlShortener.save_visits = false
84+
85+
# generate a fake request
86+
request = ActionDispatch::TestRequest.create(env = Rack::MockRequest.env_for('/', 'HTTP_HOST' => 'test.host'.b,
87+
'REMOTE_ADDR' => '1.0.0.0'.b, 'HTTP_USER_AGENT' => 'Rails Testing'.b,
88+
'HTTP_REFERER' => 'https://example.com'.b))
89+
request.user_agent = 'Mozilla/5.0 (Macintosh; Intel Mac OS X 11_3) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/14.1 Safari/605.1.15'
90+
91+
# asserts
92+
assert_no_enqueued_jobs do
93+
assert_not Visit.parse_and_save(rails_url_shortener_urls(:one), request)
94+
end
95+
96+
RailsUrlShortener.save_visits = true
7797
end
7898
end
7999
end

0 commit comments

Comments
 (0)