forked from elastic/elasticsearch
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
build structure for ruby support, problems in figuring out how to exe…
…cute the ruby scripts in the most optimal manner
- Loading branch information
Showing
7 changed files
with
287 additions
and
0 deletions.
There are no files selected for viewing
Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.
Oops, something went wrong.
Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.
Oops, something went wrong.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,145 @@ | ||
dependsOn(':elasticsearch') | ||
|
||
apply plugin: 'java' | ||
apply plugin: 'maven' | ||
|
||
archivesBaseName = "elasticsearch-lang-ruby" | ||
|
||
explodedDistDir = new File(distsDir, 'exploded') | ||
|
||
configurations.compile.transitive = true | ||
configurations.testCompile.transitive = true | ||
|
||
// no need to use the resource dir | ||
sourceSets.main.resources.srcDirs 'src/main/java' | ||
sourceSets.test.resources.srcDirs 'src/test/java' | ||
|
||
// add the source files to the dist jar | ||
//jar { | ||
// from sourceSets.main.allSource | ||
//} | ||
|
||
configurations { | ||
dists | ||
distLib { | ||
visible = false | ||
transitive = false | ||
} | ||
} | ||
|
||
dependencies { | ||
compile project(':elasticsearch') | ||
|
||
compile('org.jruby:jruby-complete:1.5.3') | ||
distLib('org.jruby:jruby-complete:1.5.3') { transitive = false } | ||
|
||
testCompile project(':test-testng') | ||
testCompile('org.testng:testng:5.10:jdk15') { transitive = false } | ||
testCompile 'org.hamcrest:hamcrest-all:1.1' | ||
} | ||
|
||
test { | ||
useTestNG() | ||
jmvArgs = ["-ea", "-Xmx1024m"] | ||
suiteName = project.name | ||
listeners = ["org.elasticsearch.util.testng.Listeners"] | ||
systemProperties["es.test.log.conf"] = System.getProperty("es.test.log.conf", "log4j-gradle.properties") | ||
} | ||
|
||
task explodedDist(dependsOn: [jar], description: 'Builds the plugin zip file') << { | ||
[explodedDistDir]*.mkdirs() | ||
|
||
copy { | ||
from configurations.distLib | ||
into explodedDistDir | ||
} | ||
|
||
// remove elasticsearch files (compile above adds the elasticsearch one) | ||
ant.delete { fileset(dir: explodedDistDir, includes: "elasticsearch-*.jar") } | ||
|
||
copy { | ||
from libsDir | ||
into explodedDistDir | ||
} | ||
|
||
ant.delete { fileset(dir: explodedDistDir, includes: "elasticsearch-*-javadoc.jar") } | ||
ant.delete { fileset(dir: explodedDistDir, includes: "elasticsearch-*-sources.jar") } | ||
} | ||
|
||
task zip(type: Zip, dependsOn: ['explodedDist']) { | ||
from(explodedDistDir) { | ||
} | ||
} | ||
|
||
task release(dependsOn: [zip]) << { | ||
ant.delete(dir: explodedDistDir) | ||
copy { | ||
from distsDir | ||
into(new File(rootProject.distsDir, "plugins")) | ||
} | ||
} | ||
|
||
configurations { | ||
deployerJars | ||
} | ||
|
||
dependencies { | ||
deployerJars "org.apache.maven.wagon:wagon-http:1.0-beta-2" | ||
} | ||
|
||
task sourcesJar(type: Jar, dependsOn: classes) { | ||
classifier = 'sources' | ||
from sourceSets.main.allSource | ||
} | ||
|
||
task javadocJar(type: Jar, dependsOn: javadoc) { | ||
classifier = 'javadoc' | ||
from javadoc.destinationDir | ||
} | ||
|
||
jar { | ||
// from sourceSets.main.allJava | ||
manifest { | ||
attributes("Implementation-Title": "ElasticSearch", "Implementation-Version": rootProject.version, "Implementation-Date": buildTimeStr) | ||
} | ||
} | ||
|
||
|
||
artifacts { | ||
archives sourcesJar | ||
archives javadocJar | ||
} | ||
|
||
uploadArchives { | ||
repositories.mavenDeployer { | ||
configuration = configurations.deployerJars | ||
repository(url: rootProject.mavenRepoUrl) { | ||
authentication(userName: rootProject.mavenRepoUser, password: rootProject.mavenRepoPass) | ||
} | ||
snapshotRepository(url: rootProject.mavenSnapshotRepoUrl) { | ||
authentication(userName: rootProject.mavenRepoUser, password: rootProject.mavenRepoPass) | ||
} | ||
|
||
pom.project { | ||
inceptionYear '2009' | ||
name 'elasticsearch-plugins-lang-ruby' | ||
description 'Ruby Plugin for ElasticSearch' | ||
licenses { | ||
license { | ||
name 'The Apache Software License, Version 2.0' | ||
url 'https://www.apache.org/licenses/LICENSE-2.0.txt' | ||
distribution 'repo' | ||
} | ||
} | ||
scm { | ||
connection 'git:https://github.com/elasticsearch/elasticsearch.git' | ||
developerConnection '[email protected]:elasticsearch/elasticsearch.git' | ||
url 'https://github.com/elasticsearch/elasticsearch' | ||
} | ||
} | ||
|
||
pom.whenConfigured {pom -> | ||
pom.dependencies = pom.dependencies.findAll {dep -> dep.scope != 'test' } // removes the test scoped ones | ||
} | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1 @@ | ||
plugin=org.elasticsearch.plugin.ruby.RubyPlugin |
44 changes: 44 additions & 0 deletions
44
plugins/lang/ruby/src/main/java/org/elasticsearch/plugin/ruby/RubyPlugin.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,44 @@ | ||
/* | ||
* Licensed to Elastic Search and Shay Banon under one | ||
* or more contributor license agreements. See the NOTICE file | ||
* distributed with this work for additional information | ||
* regarding copyright ownership. Elastic Search licenses this | ||
* file to you under the Apache License, Version 2.0 (the | ||
* "License"); you may not use this file except in compliance | ||
* with the License. You may obtain a copy of the License at | ||
* | ||
* https://www.apache.org/licenses/LICENSE-2.0 | ||
* | ||
* Unless required by applicable law or agreed to in writing, | ||
* software distributed under the License is distributed on an | ||
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY | ||
* KIND, either express or implied. See the License for the | ||
* specific language governing permissions and limitations | ||
* under the License. | ||
*/ | ||
|
||
package org.elasticsearch.plugin.ruby; | ||
|
||
import org.elasticsearch.common.inject.Module; | ||
import org.elasticsearch.plugins.AbstractPlugin; | ||
import org.elasticsearch.script.ScriptModule; | ||
|
||
/** | ||
* @author kimchy (shay.banon) | ||
*/ | ||
public class RubyPlugin extends AbstractPlugin { | ||
|
||
@Override public String name() { | ||
return "lang-ruby"; | ||
} | ||
|
||
@Override public String description() { | ||
return "Ruby plugin allowing to add javascript scripting support"; | ||
} | ||
|
||
@Override public void processModule(Module module) { | ||
if (module instanceof ScriptModule) { | ||
// ((ScriptModule) module).addScriptEngine(JavaScriptScriptEngineService.class); | ||
} | ||
} | ||
} |
67 changes: 67 additions & 0 deletions
67
plugins/lang/ruby/src/main/java/org/elasticsearch/script/ruby/RubyScriptEngineService.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,67 @@ | ||
/* | ||
* Licensed to Elastic Search and Shay Banon under one | ||
* or more contributor license agreements. See the NOTICE file | ||
* distributed with this work for additional information | ||
* regarding copyright ownership. Elastic Search licenses this | ||
* file to you under the Apache License, Version 2.0 (the | ||
* "License"); you may not use this file except in compliance | ||
* with the License. You may obtain a copy of the License at | ||
* | ||
* https://www.apache.org/licenses/LICENSE-2.0 | ||
* | ||
* Unless required by applicable law or agreed to in writing, | ||
* software distributed under the License is distributed on an | ||
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY | ||
* KIND, either express or implied. See the License for the | ||
* specific language governing permissions and limitations | ||
* under the License. | ||
*/ | ||
|
||
package org.elasticsearch.script.ruby; | ||
|
||
import org.elasticsearch.common.component.AbstractComponent; | ||
import org.elasticsearch.common.inject.Inject; | ||
import org.elasticsearch.common.settings.Settings; | ||
import org.elasticsearch.script.ExecutableScript; | ||
import org.elasticsearch.script.ScriptEngineService; | ||
import org.jruby.embed.EmbedEvalUnit; | ||
import org.jruby.embed.ScriptingContainer; | ||
|
||
import java.util.Map; | ||
|
||
/** | ||
* @author kimchy (shay.banon) | ||
*/ | ||
// Need to figure out how to execute compiled scripts in the most optimized manner (passing paramters to them). | ||
public class RubyScriptEngineService extends AbstractComponent implements ScriptEngineService { | ||
|
||
private final ScriptingContainer container; | ||
|
||
@Inject public RubyScriptEngineService(Settings settings) { | ||
super(settings); | ||
|
||
this.container = new ScriptingContainer(); | ||
container.setClassLoader(settings.getClassLoader()); | ||
} | ||
|
||
@Override public String[] types() { | ||
return new String[]{"ruby"}; | ||
} | ||
|
||
@Override public Object compile(String script) { | ||
return container.parse(script); | ||
} | ||
|
||
@Override public ExecutableScript executable(Object compiledScript, Map<String, Object> vars) { | ||
return null; //To change body of implemented methods use File | Settings | File Templates. | ||
} | ||
|
||
@Override public Object execute(Object compiledScript, Map<String, Object> vars) { | ||
EmbedEvalUnit unit = (EmbedEvalUnit) compiledScript; | ||
return null; //To change body of implemented methods use File | Settings | File Templates. | ||
} | ||
|
||
@Override public void close() { | ||
container.clear(); | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters