Class: Trackdown::Generators::InstallGenerator

Inherits:
Rails::Generators::Base
  • Object
show all
Defined in:
lib/generators/trackdown/install_generator.rb

Instance Method Summary collapse

Instance Method Details

#add_mmdb_to_gitignoreObject



14
15
16
17
18
19
20
# File 'lib/generators/trackdown/install_generator.rb', line 14

def add_mmdb_to_gitignore
  if File.exist?('.gitignore')
    append_to_file '.gitignore', "\n\n# Trackdown\n*.mmdb"
  else
    create_file '.gitignore', "# Trackdown\n*.mmdb"
  end
end

#create_database_refresh_jobObject



10
11
12
# File 'lib/generators/trackdown/install_generator.rb', line 10

def create_database_refresh_job
  template 'trackdown_database_refresh_job.rb', 'app/jobs/trackdown_database_refresh_job.rb'
end

#create_initializerObject



6
7
8
# File 'lib/generators/trackdown/install_generator.rb', line 6

def create_initializer
  template 'trackdown.rb', 'config/initializers/trackdown.rb'
end

#display_post_install_messageObject



22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
# File 'lib/generators/trackdown/install_generator.rb', line 22

def display_post_install_message
  say "\tThe `trackdown` gem has been successfully installed!", :green
  say "\nChoose your setup path:"
  say "\n  Option 1: Cloudflare (Header-Based)"
  say "    1. Ensure your app is behind Cloudflare"
  say "    2. Enable 'IP Geolocation' in Cloudflare dashboard (Network settings)"
  say "    3. Use: Trackdown.locate(request.remote_ip, request: request)"
  say "    4. Restrict direct-origin access before trusting CF-* headers"
  say "    Cloudflare origin security: https://developers.cloudflare.com/ssl/origin-configuration/authenticated-origin-pull/"
  say "    No API keys or database needed after CDN/origin setup."
  say "\n  Option 2: Amazon CloudFront (Header-Based)"
  say "    1. Forward CloudFront viewer-location headers and CloudFront-Viewer-Address"
  say "    2. Restrict direct-origin access before trusting CloudFront-* headers"
  say "    3. Use: Trackdown.locate(request.remote_ip, request: request)"
  say "    AWS headers: https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/adding-cloudfront-headers.html#cloudfront-headers-viewer-location"
  say "    AWS origin security: https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/private-content-overview.html"
  say "\n  Option 3: MaxMind (BYOK)"
  say "    1. Configure your MaxMind credentials in `config/initializers/trackdown.rb`"
  say "    2. Run 'Trackdown.update_database' to download the database"
  say "    3. Schedule TrackdownDatabaseRefreshJob to run weekly"
  say "\n  Option 4: Auto (Verified Edge + MaxMind Fallback)"
  say "    The default :auto mode uses one IP-corroborated CDN provider"
  say "    and falls back safely when no unique edge provider can be verified"
  say "\nEnjoy `trackdown`!", :green
end