Domanda

C'è un plugin per SBT disponibili che installa automaticamente JRuby e aggiunge alcuni ganci per eseguire script automaticamente in alcuni punti (ad esempio prima della compilazione).

Sfondo: Per un progetto (ascensore), che voglio usare sass , o più specificamente, bussola come strumento per generare il css. Un Java o Scala clone di sass non sarebbe sufficiente, purtroppo.

Naturalmente, non sarebbe affatto un problema per generare solo il css manualmente e poi mettere sia all'interno del repository e nessuno mai ha bisogno di cura su di esso.

D'altra parte, per facilitare lo sviluppo su diversi sistemi, preferirei avere una chiara dipendenza all'interno SBT che fa semplicemente il lavoro.

Esiste un modo per raggiungere questo obiettivo?
O in generale: C'è un modo per eseguire gli script JRuby da dentro Scala

?

Modifica ha aggiunto Maven-2 ai tag. Forse c'è un repo Maven per JRuby che mi permette di consegnare e utilizzarlo in qualche modo.

È stato utile?

Soluzione

Anche se non è forse la soluzione più elegante, si può sempre chiamare script esterni che utilizzano il supporto del processo di SBT.

import sbt._
import Process._

class Project(info: ProjectInfo) extends DefaultProject(info) {
  lazy val runSomething = task {
    "ruby somescript.rb" ! log
    None
  }
}

C'è un po 'di più informazioni sul supporto processo esterno disponibile qui: http : //code.google.com/p/simple-build-tool/wiki/Process

Altri suggerimenti

Prova il mio sbt plug da github. E 'molto ridotto all'osso, per ora, ma dovrebbe scaricare il vaso JRuby e permetterà di chiamare un file .RB prima della compilazione.

Il coraggio del plugin sono davvero semplici:

    import sbt._

    object SbtJRuby extends Plugin {
      object SbtJRubySettings {
        lazy val settings = Seq(Keys.commands += jirb, tx, jrubyFile := file("fnord.rb"))
      }

      def jirb = Command.args("jirb", "<launch jirb>") { (state, args) =>
        org.jruby.Main.main(List("-S", "jirb").toArray[String])
        state
      }

      val jruby = TaskKey[Unit]("jruby", "run a jruby file")
      val jrubyFile = SettingKey[File]("jruby-file", "path to file to run with JRuby")

      val tx = jruby <<= (jrubyFile, Keys.baseDirectory) map { (f: File, b: File) =>
        val rb = (b / f.toString).toString
        //    println("jruby with " + rb)
        org.jruby.Main.main(List(rb).toArray[String])
      }
    }

In realtà tutto quello che sta facendo sta chiamando il file jar JRuby con il nome del file rb aver superato in E, naturalmente, l'aggiunta di JRuby per sé come una dipendenza gestito:.

libraryDependencies ++= Seq(
  "org.jruby" % "jruby-complete" % "1.6.5"
)

Si aggiunge anche un comando "jirb" alla console Scala che ti mette in una sessione jirb.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top