Sha256: e74b03c827542a2a08ac48e3750f7b37a97aa27ea802468828a86f39667a597a

Contents?: true

Size: 1.91 KB

Versions: 8

Compression:

Stored size: 1.91 KB

Contents

module DockerfileRails
  module Scanner
    def scan_rails_app

      ### database ###

      database = YAML.load_file('config/database.yml').
        dig('production', 'adapter') rescue nil

      if database == 'sqlite3'
        @sqlite3 = true
      elsif database == 'postgresql'
        @postgresql = true
      elsif database == 'mysql' or database == 'mysql2'
        @mysql = true
      end

      ### ruby gems ###

      @gemfile = []
      @git = false

      if File.exist? 'Gemfile.lock'
        parser = Bundler::LockfileParser.new(Bundler.read_file('Gemfile.lock'))
        @gemfile += parser.specs.map { |spec, version| spec.name }
      end
      
      if File.exist? 'Gemfile'
        gemfile_definition = Bundler::Definition.build('Gemfile', nil, [])
        @gemfile += gemfile_definition.dependencies.map(&:name)
        @git = !gemfile_definition.spec_git_paths.empty?
      end

      @sidekiq = @gemfile.include? 'sidekiq'
      @anycable = @gemfile.include? 'anycable-rails'
      @rmagick = @gemfile.include? 'rmagick'
      @vips = @gemfile.include? 'ruby-vips'
      @bootstrap = @gemfile.include? 'bootstrap'
      @puppeteer = @gemfile.include? 'puppeteer'
      @bootsnap = @gemfile.include? 'bootsnap'

      ### node modules ###

      @package_json = []

      if File.exist? 'package.json'
        @package_json += JSON.load_file('package.json')['dependencies'].keys rescue []
      end

      @puppeteer ||= @package_json.include? 'puppeteer'

      ### cable/redis ###

      @cable = ! Dir['app/channels/*.rb'].empty?

      if @cable
        @redis_cable = true
        if (YAML.load_file('config/cable.yml').dig('production', 'adapter') rescue '').include? 'any_cable'
          @anycable = true
        end
      end

      if (IO.read('config/environments/production.rb') =~ /redis/i rescue false)
        @redis_cache = true
      end

      @redis = @redis_cable || @redis_cache || @sidekiq
    end
  end
end

Version data entries

8 entries across 8 versions & 1 rubygems

Version Path
dockerfile-rails-0.4.3 lib/dockerfile-rails/scanner.rb
dockerfile-rails-0.4.2 lib/dockerfile-rails/scanner.rb
dockerfile-rails-0.4.1 lib/dockerfile-rails/scanner.rb
dockerfile-rails-0.4.0 lib/dockerfile-rails/scanner.rb
dockerfile-rails-0.3.2 lib/dockerfile-rails/scanner.rb
dockerfile-rails-0.3.1 lib/dockerfile-rails/scanner.rb
dockerfile-rails-0.2.0 lib/dockerfile-rails/scanner.rb
dockerfile-rails-0.1.0 lib/dockerfile-rails/scanner.rb