From e4771746d4f4c6b7c99c0913cbd40d4dcab97ba9 Mon Sep 17 00:00:00 2001 From: Dmitri Gabbasov Date: Tue, 4 Jul 2017 13:48:46 +0300 Subject: [PATCH] Make it possible to disable auto-activation of JRebel --- config/jrebel_agent.yml | 1 + docs/framework-jrebel_agent.md | 1 + lib/java_buildpack/framework/jrebel_agent.rb | 10 ++++++++-- spec/java_buildpack/framework/jrebel_agent_spec.rb | 9 +++++++++ 4 files changed, 19 insertions(+), 2 deletions(-) diff --git a/config/jrebel_agent.yml b/config/jrebel_agent.yml index e5e0d4dd23..4b35e3a051 100644 --- a/config/jrebel_agent.yml +++ b/config/jrebel_agent.yml @@ -17,3 +17,4 @@ --- version: 7.+ repository_root: https://dl.zeroturnaround.com/jrebel +enabled: true \ No newline at end of file diff --git a/docs/framework-jrebel_agent.md b/docs/framework-jrebel_agent.md index 6b60a9f955..c1c6a5f6c8 100644 --- a/docs/framework-jrebel_agent.md +++ b/docs/framework-jrebel_agent.md @@ -25,6 +25,7 @@ The framework can be configured by modifying the [`config/jrebel_agent.yml`][] f | ---- | ----------- | `repository_root` | The URL of the JRebel repository index ([details][repositories]). | `version` | The version of JRebel to use. Candidate versions can be found in [this listing][]. +| `enabled` | Whether to activate JRebel (upon the presence of `rebel-remote.xml`) or not. [Configuration and Extension]: ../README.md#configuration-and-extension [`config/jrebel_agent.yml`]: ../config/jrebel_agent.yml diff --git a/lib/java_buildpack/framework/jrebel_agent.rb b/lib/java_buildpack/framework/jrebel_agent.rb index 9e7a4b9049..ad8ddf9b0f 100644 --- a/lib/java_buildpack/framework/jrebel_agent.rb +++ b/lib/java_buildpack/framework/jrebel_agent.rb @@ -46,8 +46,10 @@ def release # (see JavaBuildpack::Component::VersionedDependencyComponent#supports?) def supports? - jrebel_configured?(@application.root) || jrebel_configured?(@application.root + 'WEB-INF/classes') || - jars_with_jrebel_configured?(@application.root) + enabled? && ( + jrebel_configured?(@application.root) || + jrebel_configured?(@application.root + 'WEB-INF/classes') || + jars_with_jrebel_configured?(@application.root)) end private @@ -68,6 +70,10 @@ def architecture `uname -m`.strip end + def enabled? + @configuration['enabled'].nil? || @configuration['enabled'] + end + end end diff --git a/spec/java_buildpack/framework/jrebel_agent_spec.rb b/spec/java_buildpack/framework/jrebel_agent_spec.rb index db4fc51c97..712635143a 100644 --- a/spec/java_buildpack/framework/jrebel_agent_spec.rb +++ b/spec/java_buildpack/framework/jrebel_agent_spec.rb @@ -38,6 +38,15 @@ app_fixture: 'framework_jrebel_app_war_with_jar' do expect(component.detect).to eq("jrebel-agent=#{version}") end + + context do + let(:configuration) { { 'enabled' => false } } + + it 'does not detect when not enabled', + app_fixture: 'framework_jrebel_app_simple' do + expect(component.detect).to be_nil + end + end it 'downloads the JRebel JAR and the native agent', app_fixture: 'framework_jrebel_app_simple',