torquebox-rake-support 2.1.2 → 2.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/lib/torquebox/deploy_utils.rb +125 -25
- data/lib/torquebox/rails.rb +1 -0
- data/spec/deploy_utils_spec.rb +41 -3
- metadata +97 -94
| @@ -159,42 +159,115 @@ module TorqueBox | |
| 159 159 | 
             
                      ENV.delete('BUNDLE_GEMFILE')
         | 
| 160 160 | 
             
                      # If called from rake within a rails app, bundler will try
         | 
| 161 161 | 
             
                      # to init itself via RUBYOPT, which we don't want
         | 
| 162 | 
            -
                      ENV.delete('RUBYOPT') | 
| 163 | 
            -
                      #  | 
| 164 | 
            -
                      #  | 
| 165 | 
            -
                      # own gems if used | 
| 166 | 
            -
                       | 
| 167 | 
            -
             | 
| 168 | 
            -
             | 
| 162 | 
            +
                      ENV.delete('RUBYOPT')
         | 
| 163 | 
            +
                      # Ensure bundler gets on the Ruby load path of the booted
         | 
| 164 | 
            +
                      # TorqueBox instance if it's on the load path of this Ruby
         | 
| 165 | 
            +
                      # runtime so we can find bundler and our own gems if used
         | 
| 166 | 
            +
                      # with bundle install --deployment
         | 
| 167 | 
            +
                      ENV['RUBYLIB'] = rubylib_with_bundler($:)
         | 
| 168 | 
            +
             | 
| 169 | 
            +
                      options[:jvm_options] ||= ''
         | 
| 170 | 
            +
                      options[:jvm_options] << " #{jruby_opts_properties}"
         | 
| 171 | 
            +
                      options[:jvm_options] << " #{strip_jvm_properties_from_jruby_opts}"
         | 
| 172 | 
            +
             | 
| 173 | 
            +
                      set_java_opts(options[:jvm_options].strip)
         | 
| 169 174 | 
             
                      print_server_config(options[:clustered])
         | 
| 170 175 | 
             
                      exec_command(run_command_line(options).join(' '))
         | 
| 171 176 | 
             
                    end
         | 
| 172 177 | 
             
                  end
         | 
| 173 178 |  | 
| 179 | 
            +
                  # name: (string) what to call the resulting knob file
         | 
| 180 | 
            +
                  # app_dir: (string) where the application to be packaged is
         | 
| 181 | 
            +
                  # dest_dir: (string) where to put the resulting knob file
         | 
| 182 | 
            +
                  # excludes: (string) string or regex of files to exclude from the archive
         | 
| 183 | 
            +
                  # precompile_assets: (boolean) whether or not to precompile assets. this is rails-specific.
         | 
| 184 | 
            +
                  # package_gems: (boolean) whether or not to install all bundle gems to vendor/bundle (this
         | 
| 185 | 
            +
                  #                         is rather convenient as it means that you don't have to run bundle
         | 
| 186 | 
            +
                  #                         install on your production servers)
         | 
| 187 | 
            +
                  # package_without: (array) all the bundler groups to run bundle install without (cuts down
         | 
| 188 | 
            +
                  #                          on package size by snipping out potentially inappropriate
         | 
| 189 | 
            +
                  #                          dependencies for a production environment).
         | 
| 174 190 | 
             
                  def create_archive(opts = {})
         | 
| 175 | 
            -
             | 
| 176 191 | 
             
                    archive = normalize_archive_name( find_option( opts, 'name' ) || archive_name )
         | 
| 177 | 
            -
                    app_dir = find_option( opts, 'app_dir') || Dir.pwd
         | 
| 178 | 
            -
                    dest_dir = find_option( opts, 'dest_dir') || Dir.pwd
         | 
| 192 | 
            +
                    app_dir = find_option( opts, 'app_dir' ) || Dir.pwd
         | 
| 193 | 
            +
                    dest_dir = find_option( opts, 'dest_dir' ) || Dir.pwd
         | 
| 194 | 
            +
                    excludes = find_option( opts, 'exclude' ) || ""
         | 
| 195 | 
            +
                    should_precompile_assets = find_option( opts, 'precompile_assets' ) == true
         | 
| 196 | 
            +
                    should_package_gems = find_option( opts, 'package_gems' ) == true
         | 
| 197 | 
            +
                    package_without = find_option( opts, 'package_without' ) || Array.new
         | 
| 198 | 
            +
             | 
| 199 | 
            +
                    if should_precompile_assets
         | 
| 200 | 
            +
                      precompile_assets( app_dir )
         | 
| 201 | 
            +
                      raise 'Error precompiling assets' unless $? == 0
         | 
| 202 | 
            +
                    end
         | 
| 203 | 
            +
             | 
| 204 | 
            +
                    archive_path = File.join( dest_dir, archive )
         | 
| 205 | 
            +
                    archive_proc = lambda { create_knob_archive( app_dir, archive_path, excludes ) }
         | 
| 206 | 
            +
             | 
| 207 | 
            +
                    if should_package_gems
         | 
| 208 | 
            +
                      package_gems( app_dir, package_without ) {
         | 
| 209 | 
            +
                        raise 'Error packaging gems' unless $? == 0
         | 
| 210 | 
            +
                        archive_proc.call
         | 
| 211 | 
            +
                      }
         | 
| 212 | 
            +
                    else
         | 
| 213 | 
            +
                      archive_proc.call
         | 
| 214 | 
            +
                    end
         | 
| 215 | 
            +
             | 
| 216 | 
            +
                    archive_path
         | 
| 217 | 
            +
                  end
         | 
| 218 | 
            +
             | 
| 219 | 
            +
                  def precompile_assets(app_dir)
         | 
| 220 | 
            +
                    Dir.chdir( app_dir ) do
         | 
| 221 | 
            +
                      jruby_command( "-S rake assets:precompile" )
         | 
| 222 | 
            +
                    end
         | 
| 223 | 
            +
                  end
         | 
| 224 | 
            +
             | 
| 225 | 
            +
                  def package_gems(app_dir, package_without)
         | 
| 226 | 
            +
                    # note - this is used instead of freeze gems because it
         | 
| 227 | 
            +
                    # should cause the archive to capture .bundle/config,
         | 
| 228 | 
            +
                    # thereby forcing the app to use the bundled gems. we delete
         | 
| 229 | 
            +
                    # the deployment configuration for rubygems afterward
         | 
| 230 | 
            +
                    bundler_config = File.join( app_dir, '.bundle/config' )
         | 
| 231 | 
            +
                    if File.exists?( bundler_config )
         | 
| 232 | 
            +
                      old_config = File.read( bundler_config )
         | 
| 233 | 
            +
                    else
         | 
| 234 | 
            +
                      old_config = nil
         | 
| 235 | 
            +
                    end
         | 
| 236 | 
            +
                    cmd = %w{-S bundle install --local --deployment}
         | 
| 237 | 
            +
                    unless package_without.empty?
         | 
| 238 | 
            +
                      cmd << '--without'
         | 
| 239 | 
            +
                      cmd << package_without
         | 
| 240 | 
            +
                    end
         | 
| 241 | 
            +
                    Dir.chdir( app_dir ) do
         | 
| 242 | 
            +
                      jruby_command( '-S bundle package' )
         | 
| 243 | 
            +
                      jruby_command( cmd.flatten.join(' ') )
         | 
| 244 | 
            +
                    end
         | 
| 245 | 
            +
                    yield if block_given?
         | 
| 246 | 
            +
                  ensure
         | 
| 247 | 
            +
                    if File.exists?( bundler_config )
         | 
| 248 | 
            +
                      if old_config
         | 
| 249 | 
            +
                        File.open( bundler_config, 'w' ) { |io| io.write( old_config ) }
         | 
| 250 | 
            +
                      else
         | 
| 251 | 
            +
                        File.delete( bundler_config ) # there wasn't originally a config file there
         | 
| 252 | 
            +
                      end
         | 
| 253 | 
            +
                    end
         | 
| 254 | 
            +
                  end
         | 
| 179 255 |  | 
| 256 | 
            +
                  def create_knob_archive(app_dir, archive_path, excludes)
         | 
| 180 257 | 
             
                    default_skip_files = %w{ ^log/ ^tmp/ ^test/ ^spec/ ^[^/]*\.knob$ vendor/.*cache/.*\.gem$ }
         | 
| 181 | 
            -
                    opts_skip_files = ( | 
| 182 | 
            -
                      split(/,/).
         | 
| 183 | 
            -
                      map { |r| "^[^/]*#{r}"}
         | 
| 258 | 
            +
                    opts_skip_files = excludes.split( /,/ ).map { |r| "^[^/]*#{r}" }
         | 
| 184 259 | 
             
                    skip_files = default_skip_files + opts_skip_files
         | 
| 185 260 |  | 
| 186 | 
            -
                    archive_path = File.join(dest_dir, archive)
         | 
| 187 | 
            -
             | 
| 188 261 | 
             
                    Dir.chdir( app_dir ) do
         | 
| 189 262 | 
             
                      include_files = []
         | 
| 190 263 | 
             
                      Dir[ "**/**", ".bundle/**/**" ].each do |entry|
         | 
| 191 | 
            -
                        unless File.directory?(entry) || skip_files.any? {|regex| entry.match(regex)}
         | 
| 264 | 
            +
                        unless File.directory?( entry ) || skip_files.any? { |regex| entry.match( regex ) }
         | 
| 192 265 | 
             
                          include_files << '"' + entry.to_s + '"'
         | 
| 193 266 | 
             
                        end
         | 
| 194 267 | 
             
                      end
         | 
| 195 268 |  | 
| 196 | 
            -
                      includes = Tempfile.new("include-files")
         | 
| 197 | 
            -
                      includes.write(include_files.join("\n"))
         | 
| 269 | 
            +
                      includes = Tempfile.new( "include-files" )
         | 
| 270 | 
            +
                      includes.write( include_files.join( "\n" ) )
         | 
| 198 271 | 
             
                      includes.flush
         | 
| 199 272 |  | 
| 200 273 | 
             
                      cmd = "jar cvf '#{archive_path}' @#{includes.path}"
         | 
| @@ -202,16 +275,12 @@ module TorqueBox | |
| 202 275 | 
             
                      run_command( cmd )
         | 
| 203 276 | 
             
                      includes.close( true )
         | 
| 204 277 | 
             
                    end
         | 
| 205 | 
            -
             | 
| 206 | 
            -
                    archive_path
         | 
| 207 278 | 
             
                  end
         | 
| 208 279 |  | 
| 209 280 | 
             
                  def freeze_gems(app_dir = Dir.pwd)
         | 
| 210 281 | 
             
                    Dir.chdir( app_dir ) do
         | 
| 211 | 
            -
                       | 
| 212 | 
            -
                       | 
| 213 | 
            -
                      run_command( "#{jruby} -S bundle package" )
         | 
| 214 | 
            -
                      run_command( "#{jruby} -S bundle install --local --path vendor/bundle" )
         | 
| 282 | 
            +
                      jruby_command( '-S bundle package' )
         | 
| 283 | 
            +
                      jruby_command( '-S bundle install --local --path vendor/bundle' )
         | 
| 215 284 | 
             
                    end
         | 
| 216 285 | 
             
                  end
         | 
| 217 286 |  | 
| @@ -299,6 +368,12 @@ module TorqueBox | |
| 299 368 | 
             
                    success
         | 
| 300 369 | 
             
                  end
         | 
| 301 370 |  | 
| 371 | 
            +
                  def jruby_command(cmd)
         | 
| 372 | 
            +
                    jruby = File.join( RbConfig::CONFIG['bindir'], RbConfig::CONFIG['ruby_install_name'] )
         | 
| 373 | 
            +
                    RUBY_VERSION =~ /^1\.9\./ ? jruby << " --1.9" : jruby << " --1.8"
         | 
| 374 | 
            +
                    run_command( "#{jruby} #{cmd}" )
         | 
| 375 | 
            +
                  end
         | 
| 376 | 
            +
             | 
| 302 377 | 
             
                  def run_command(cmd)
         | 
| 303 378 | 
             
                    puts `#{cmd} 2>&1`
         | 
| 304 379 | 
             
                  end
         | 
| @@ -410,10 +485,35 @@ module TorqueBox | |
| 410 485 | 
             
                    jruby_opts = ENV['JRUBY_OPTS']
         | 
| 411 486 | 
             
                    return "" if jruby_opts.nil?
         | 
| 412 487 | 
             
                    # Only convert -Xa.b, -Xa.b.c, -Xa.b.c.d style options to properties
         | 
| 413 | 
            -
                    properties = jruby_opts.scan(/-X(\w+\..+?)\s/)
         | 
| 488 | 
            +
                    properties = jruby_opts.scan(/-X(\w+\..+?)(\s|$)/)
         | 
| 414 489 | 
             
                    properties.map { |matches| "-Djruby.#{matches.first}" }.join(' ')
         | 
| 415 490 | 
             
                  end
         | 
| 416 491 |  | 
| 492 | 
            +
                  def strip_jvm_properties_from_jruby_opts
         | 
| 493 | 
            +
                    jruby_opts = ENV['JRUBY_OPTS']
         | 
| 494 | 
            +
                    return '' if jruby_opts.nil?
         | 
| 495 | 
            +
                    jvm_properties = []
         | 
| 496 | 
            +
                    properties = jruby_opts.split(' ')
         | 
| 497 | 
            +
                    properties.each do |property|
         | 
| 498 | 
            +
                      if property =~ /^-J.+/
         | 
| 499 | 
            +
                        jvm_properties << property.sub(/-J/, '')
         | 
| 500 | 
            +
                        ENV['JRUBY_OPTS'] = ENV['JRUBY_OPTS'].sub(property, '')
         | 
| 501 | 
            +
                      end
         | 
| 502 | 
            +
                    end
         | 
| 503 | 
            +
                    # get rid of any leftover spaces
         | 
| 504 | 
            +
                    ENV['JRUBY_OPTS'] = ENV['JRUBY_OPTS'].split(' ').join(' ')
         | 
| 505 | 
            +
                    jvm_properties.join(' ')
         | 
| 506 | 
            +
                  end
         | 
| 507 | 
            +
             | 
| 508 | 
            +
                  def rubylib_with_bundler(load_path)
         | 
| 509 | 
            +
                    bundler_load_paths = load_path.select { |p| p.include?('bundler') }
         | 
| 510 | 
            +
                    rubylib = (ENV['RUBYLIB'] || '').dup # ENV strings are frozen
         | 
| 511 | 
            +
                    unless rubylib.empty? || bundler_load_paths.empty?
         | 
| 512 | 
            +
                      rubylib << ':'
         | 
| 513 | 
            +
                    end
         | 
| 514 | 
            +
                    rubylib << bundler_load_paths.join(':')
         | 
| 515 | 
            +
                  end
         | 
| 516 | 
            +
             | 
| 417 517 | 
             
                  private
         | 
| 418 518 |  | 
| 419 519 | 
             
                  def undeploy(name, opts = {})
         | 
    
        data/lib/torquebox/rails.rb
    CHANGED
    
    
    
        data/spec/deploy_utils_spec.rb
    CHANGED
    
    | @@ -251,13 +251,13 @@ describe TorqueBox::DeployUtils do | |
| 251 251 | 
             
                end
         | 
| 252 252 |  | 
| 253 253 | 
             
                it 'should set java options' do
         | 
| 254 | 
            -
                  @util.should_receive(:set_java_opts).with('java options | 
| 254 | 
            +
                  @util.should_receive(:set_java_opts).with('java options')
         | 
| 255 255 | 
             
                  @util.run_server(:jvm_options => 'java options')
         | 
| 256 256 | 
             
                end
         | 
| 257 257 |  | 
| 258 258 | 
             
                it 'should pass JRUBY_OPTS properties' do
         | 
| 259 | 
            -
                  ENV['JRUBY_OPTS'] = '--1.9 -Xjit.logging=true -Xthread.pool.enabled=true | 
| 260 | 
            -
                  @util.should_receive(:set_java_opts).with(' | 
| 259 | 
            +
                  ENV['JRUBY_OPTS'] = '--1.9 -Xjit.logging=true -Xthread.pool.enabled=true'
         | 
| 260 | 
            +
                  @util.should_receive(:set_java_opts).with('-Djruby.jit.logging=true -Djruby.thread.pool.enabled=true')
         | 
| 261 261 | 
             
                  @util.run_server
         | 
| 262 262 | 
             
                end
         | 
| 263 263 |  | 
| @@ -266,6 +266,13 @@ describe TorqueBox::DeployUtils do | |
| 266 266 | 
             
                  @util.should_receive(:set_java_opts).with('java options -Djruby.jit.logging=true')
         | 
| 267 267 | 
             
                  @util.run_server(:jvm_options => 'java options')
         | 
| 268 268 | 
             
                end
         | 
| 269 | 
            +
             | 
| 270 | 
            +
                it 'should strip and pass JRUBY_OPTS jvm options' do
         | 
| 271 | 
            +
                  ENV['JRUBY_OPTS'] = '--1.9 -J-Xmx1024m -J-Xss2048k -Xjit.logging=true'
         | 
| 272 | 
            +
                  @util.should_receive(:set_java_opts).with('some java options -Djruby.jit.logging=true -Xmx1024m -Xss2048k')
         | 
| 273 | 
            +
                  @util.run_server(:jvm_options => 'some java options')
         | 
| 274 | 
            +
                  ENV['JRUBY_OPTS'].should == '--1.9 -Xjit.logging=true'
         | 
| 275 | 
            +
                end
         | 
| 269 276 | 
             
              end
         | 
| 270 277 |  | 
| 271 278 | 
             
              describe '.is_deployed?' do
         | 
| @@ -449,4 +456,35 @@ describe TorqueBox::DeployUtils do | |
| 449 456 | 
             
                  @util.deployment_status[@appname][:status].should == 'deployment failed'
         | 
| 450 457 | 
             
                end
         | 
| 451 458 | 
             
              end
         | 
| 459 | 
            +
             | 
| 460 | 
            +
              describe '.rubylib_with_bundler' do
         | 
| 461 | 
            +
                before(:each) do
         | 
| 462 | 
            +
                  @rubylib = ENV['RUBYLIB']
         | 
| 463 | 
            +
                end
         | 
| 464 | 
            +
             | 
| 465 | 
            +
                after(:each) do
         | 
| 466 | 
            +
                  ENV['RUBYLIB'] = @rubylib
         | 
| 467 | 
            +
                end
         | 
| 468 | 
            +
             | 
| 469 | 
            +
                it 'should equal ENV["RUBYLIB"] if bundler not in load path' do
         | 
| 470 | 
            +
                  ENV['RUBYLIB'] = '/path/to/somewhere'
         | 
| 471 | 
            +
                  @util.rubylib_with_bundler([]).should == '/path/to/somewhere'
         | 
| 472 | 
            +
                end
         | 
| 473 | 
            +
             | 
| 474 | 
            +
                it 'should be empty if ENV["RUBYLIB"] not set and bundler not on load path' do
         | 
| 475 | 
            +
                  ENV['RUBYLIB'] = nil
         | 
| 476 | 
            +
                  @util.rubylib_with_bundler([]).should be_empty
         | 
| 477 | 
            +
                end
         | 
| 478 | 
            +
             | 
| 479 | 
            +
                it 'should not include ENV["RUBYLIB"] if not set' do
         | 
| 480 | 
            +
                  ENV['RUBYLIB'] = nil
         | 
| 481 | 
            +
                  @util.rubylib_with_bundler(['/some/bundler/path']).should == '/some/bundler/path'
         | 
| 482 | 
            +
                end
         | 
| 483 | 
            +
             | 
| 484 | 
            +
                it 'should only include load path entries containing bundler' do
         | 
| 485 | 
            +
                  ENV['RUBYLIB'] = '/path/to/abc'
         | 
| 486 | 
            +
                  load_path = ['/some/bundler/path', '/some/other/path']
         | 
| 487 | 
            +
                  @util.rubylib_with_bundler(load_path).should =='/path/to/abc:/some/bundler/path'
         | 
| 488 | 
            +
                end
         | 
| 489 | 
            +
              end
         | 
| 452 490 | 
             
            end
         | 
    
        metadata
    CHANGED
    
    | @@ -1,109 +1,112 @@ | |
| 1 | 
            -
            --- !ruby/object:Gem::Specification | 
| 1 | 
            +
            --- !ruby/object:Gem::Specification
         | 
| 2 2 | 
             
            name: torquebox-rake-support
         | 
| 3 | 
            -
            version: !ruby/object:Gem::Version | 
| 4 | 
            -
              prerelease: | 
| 5 | 
            -
              version: 2. | 
| 3 | 
            +
            version: !ruby/object:Gem::Version
         | 
| 4 | 
            +
              prerelease:
         | 
| 5 | 
            +
              version: 2.2.0
         | 
| 6 6 | 
             
            platform: ruby
         | 
| 7 | 
            -
            authors: | 
| 8 | 
            -
             | 
| 9 | 
            -
            autorequire: | 
| 7 | 
            +
            authors:
         | 
| 8 | 
            +
            - The TorqueBox Team
         | 
| 9 | 
            +
            autorequire:
         | 
| 10 10 | 
             
            bindir: bin
         | 
| 11 11 | 
             
            cert_chain: []
         | 
| 12 | 
            -
             | 
| 13 | 
            -
             | 
| 14 | 
            -
             | 
| 15 | 
            -
               | 
| 16 | 
            -
             | 
| 17 | 
            -
                 | 
| 18 | 
            -
                 | 
| 19 | 
            -
                   | 
| 20 | 
            -
             | 
| 21 | 
            -
             | 
| 22 | 
            -
             | 
| 23 | 
            -
             | 
| 24 | 
            -
             | 
| 25 | 
            -
             | 
| 26 | 
            -
             | 
| 27 | 
            -
                 | 
| 28 | 
            -
             | 
| 29 | 
            -
               | 
| 30 | 
            -
             | 
| 31 | 
            -
             | 
| 32 | 
            -
             | 
| 33 | 
            -
             | 
| 34 | 
            -
             | 
| 35 | 
            -
             | 
| 36 | 
            -
             | 
| 37 | 
            -
             | 
| 38 | 
            -
             | 
| 39 | 
            -
                 | 
| 40 | 
            -
             | 
| 41 | 
            -
             | 
| 42 | 
            -
             | 
| 12 | 
            +
            date: 2012-12-06 00:00:00.000000000 Z
         | 
| 13 | 
            +
            dependencies:
         | 
| 14 | 
            +
            - !ruby/object:Gem::Dependency
         | 
| 15 | 
            +
              name: rake
         | 
| 16 | 
            +
              version_requirements: !ruby/object:Gem::Requirement
         | 
| 17 | 
            +
                requirements:
         | 
| 18 | 
            +
                - - ! '>='
         | 
| 19 | 
            +
                  - !ruby/object:Gem::Version
         | 
| 20 | 
            +
                    version: 0.8.7
         | 
| 21 | 
            +
                none: false
         | 
| 22 | 
            +
              requirement: !ruby/object:Gem::Requirement
         | 
| 23 | 
            +
                requirements:
         | 
| 24 | 
            +
                - - ! '>='
         | 
| 25 | 
            +
                  - !ruby/object:Gem::Version
         | 
| 26 | 
            +
                    version: 0.8.7
         | 
| 27 | 
            +
                none: false
         | 
| 28 | 
            +
              prerelease: false
         | 
| 29 | 
            +
              type: :runtime
         | 
| 30 | 
            +
            - !ruby/object:Gem::Dependency
         | 
| 31 | 
            +
              name: rspec
         | 
| 32 | 
            +
              version_requirements: !ruby/object:Gem::Requirement
         | 
| 33 | 
            +
                requirements:
         | 
| 34 | 
            +
                - - '='
         | 
| 35 | 
            +
                  - !ruby/object:Gem::Version
         | 
| 36 | 
            +
                    version: 2.7.0
         | 
| 37 | 
            +
                none: false
         | 
| 38 | 
            +
              requirement: !ruby/object:Gem::Requirement
         | 
| 39 | 
            +
                requirements:
         | 
| 40 | 
            +
                - - '='
         | 
| 41 | 
            +
                  - !ruby/object:Gem::Version
         | 
| 42 | 
            +
                    version: 2.7.0
         | 
| 43 | 
            +
                none: false
         | 
| 44 | 
            +
              prerelease: false
         | 
| 45 | 
            +
              type: :development
         | 
| 46 | 
            +
            description: ''
         | 
| 47 | 
            +
            email:
         | 
| 48 | 
            +
            - torquebox-dev@torquebox.org
         | 
| 43 49 | 
             
            executables: []
         | 
| 44 | 
            -
             | 
| 45 50 | 
             
            extensions: []
         | 
| 46 | 
            -
             | 
| 47 51 | 
             
            extra_rdoc_files: []
         | 
| 48 | 
            -
             | 
| 49 | 
            -
             | 
| 50 | 
            -
             | 
| 51 | 
            -
             | 
| 52 | 
            -
             | 
| 53 | 
            -
             | 
| 54 | 
            -
             | 
| 55 | 
            -
             | 
| 56 | 
            -
             | 
| 57 | 
            -
             | 
| 58 | 
            -
             | 
| 59 | 
            -
             | 
| 60 | 
            -
             | 
| 61 | 
            -
             | 
| 62 | 
            -
             | 
| 63 | 
            -
             | 
| 64 | 
            -
             | 
| 65 | 
            -
             | 
| 66 | 
            -
             | 
| 67 | 
            -
             | 
| 68 | 
            -
             | 
| 69 | 
            -
             | 
| 70 | 
            -
             | 
| 71 | 
            -
             | 
| 72 | 
            -
             | 
| 73 | 
            -
             | 
| 74 | 
            -
             | 
| 75 | 
            -
             | 
| 76 | 
            -
             | 
| 77 | 
            -
              - spec/fixtures/simpleapp/vendor/vendor.rb
         | 
| 52 | 
            +
            files:
         | 
| 53 | 
            +
            - licenses/lgpl-2.1.txt
         | 
| 54 | 
            +
            - lib/org.torquebox.rake-support.rb
         | 
| 55 | 
            +
            - lib/torquebox-rake-support.rb
         | 
| 56 | 
            +
            - lib/torquebox/rails.rb
         | 
| 57 | 
            +
            - lib/torquebox/deploy_utils.rb
         | 
| 58 | 
            +
            - lib/torquebox/upstart.rb
         | 
| 59 | 
            +
            - lib/torquebox/launchd.rb
         | 
| 60 | 
            +
            - lib/torquebox/server.rb
         | 
| 61 | 
            +
            - lib/torquebox/rake/tasks.rb
         | 
| 62 | 
            +
            - lib/torquebox/rake/tasks/deployment.rb
         | 
| 63 | 
            +
            - lib/torquebox/rake/tasks/archive.rb
         | 
| 64 | 
            +
            - lib/torquebox/rake/tasks/server.rb
         | 
| 65 | 
            +
            - generators/USAGE
         | 
| 66 | 
            +
            - generators/torquebox_queue_generator.rb
         | 
| 67 | 
            +
            - generators/templates/queue.rb
         | 
| 68 | 
            +
            - spec/server_spec.rb
         | 
| 69 | 
            +
            - spec/deploy_utils_spec.rb
         | 
| 70 | 
            +
            - spec/rails_spec.rb
         | 
| 71 | 
            +
            - spec/upstart_spec.rb
         | 
| 72 | 
            +
            - spec/spec_helper.rb
         | 
| 73 | 
            +
            - spec/fixtures/simpleapp/simpleapp.box
         | 
| 74 | 
            +
            - spec/fixtures/simpleapp/config.ru
         | 
| 75 | 
            +
            - spec/fixtures/simpleapp/vendor/vendor.rb
         | 
| 76 | 
            +
            - spec/fixtures/simpleapp/puppet/puppet.rb
         | 
| 77 | 
            +
            - spec/fixtures/simpleapp/app/app.box
         | 
| 78 | 
            +
            - spec/fixtures/simpleapp/app/a-non-cached.gem
         | 
| 79 | 
            +
            - spec/fixtures/simpleapp/app/app.rb
         | 
| 80 | 
            +
            - spec/fixtures/simpleapp/app/puppet-master.rb
         | 
| 78 81 | 
             
            homepage: http://torquebox.org/
         | 
| 79 | 
            -
            licenses: | 
| 80 | 
            -
             | 
| 81 | 
            -
            post_install_message: | 
| 82 | 
            +
            licenses:
         | 
| 83 | 
            +
            - lgpl
         | 
| 84 | 
            +
            post_install_message:
         | 
| 82 85 | 
             
            rdoc_options: []
         | 
| 83 | 
            -
             | 
| 84 | 
            -
             | 
| 85 | 
            -
             | 
| 86 | 
            -
             | 
| 86 | 
            +
            require_paths:
         | 
| 87 | 
            +
            - lib
         | 
| 88 | 
            +
            required_ruby_version: !ruby/object:Gem::Requirement
         | 
| 89 | 
            +
              requirements:
         | 
| 90 | 
            +
              - - ! '>='
         | 
| 91 | 
            +
                - !ruby/object:Gem::Version
         | 
| 92 | 
            +
                  version: !binary |-
         | 
| 93 | 
            +
                    MA==
         | 
| 87 94 | 
             
              none: false
         | 
| 88 | 
            -
             | 
| 89 | 
            -
             | 
| 90 | 
            -
             | 
| 91 | 
            -
             | 
| 92 | 
            -
             | 
| 95 | 
            +
            required_rubygems_version: !ruby/object:Gem::Requirement
         | 
| 96 | 
            +
              requirements:
         | 
| 97 | 
            +
              - - ! '>='
         | 
| 98 | 
            +
                - !ruby/object:Gem::Version
         | 
| 99 | 
            +
                  version: !binary |-
         | 
| 100 | 
            +
                    MA==
         | 
| 93 101 | 
             
              none: false
         | 
| 94 | 
            -
              requirements: 
         | 
| 95 | 
            -
                - - ">="
         | 
| 96 | 
            -
                  - !ruby/object:Gem::Version 
         | 
| 97 | 
            -
                    version: "0"
         | 
| 98 102 | 
             
            requirements: []
         | 
| 99 | 
            -
             | 
| 100 | 
            -
            rubyforge_project: 
         | 
| 103 | 
            +
            rubyforge_project:
         | 
| 101 104 | 
             
            rubygems_version: 1.8.24
         | 
| 102 | 
            -
            signing_key: | 
| 105 | 
            +
            signing_key:
         | 
| 103 106 | 
             
            specification_version: 3
         | 
| 104 107 | 
             
            summary: TorqueBox Rake Support
         | 
| 105 | 
            -
            test_files: | 
| 106 | 
            -
             | 
| 107 | 
            -
             | 
| 108 | 
            -
             | 
| 109 | 
            -
             | 
| 108 | 
            +
            test_files:
         | 
| 109 | 
            +
            - spec/server_spec.rb
         | 
| 110 | 
            +
            - spec/deploy_utils_spec.rb
         | 
| 111 | 
            +
            - spec/rails_spec.rb
         | 
| 112 | 
            +
            - spec/upstart_spec.rb
         |