jruby/warbler

Ins't the source still contained in the compiled war?

thebravoman opened this issue · 0 comments

Hi,
I am doing

warble compiled war

As a result I have a war with a .rb and .class file

The .rb contains

load __FILE__.sub(/.rb$/, '.class')

and there is a .class file.

When decompiling the .class file I see

// 
// Decompiled by Procyon v0.5.36
// 

package lib.liquid_drops;

import org.jruby.ir.IRScope;
import org.jruby.ParseResult;
import org.jruby.ir.runtime.IRRuntimeHelpers;
import org.jruby.Ruby;

public class user_drop
{
    private static final String script_ir;
    
    static {
        script_ir = new StringBuilder().append("\u0000\u0000\u0000\u0001\u0000\u0000\ts\u00ff\u00ff\u00ff\u00ff\u0007\b\u0013t\u0000\u0000St\u0006\u0001sSt\u0005\u0002_\u0000D\u0000-t\u0000\u0003\u0001_\u0000(t\u0000\u0003\fE\u0001\u00ff\u00ff\u00ff\u00ff\u00ff\u001dlib/liquid_drops/user_drop.rb\u0000\b\u0013t\u0000\u0000St\u0006\u0001sSt\u0005\u0002_\u0000D\u0007;t\u0000\u0003\u0006Liquid\bUS-ASCIIsf<t\u0000\u0004t\u0000\u0003\u0004Drop\bUS-ASCIItt.t\u0000\u0005\u0002_\u0000t\u0000\u0004D1E\u0002\u00ff\u00ff\u00ff\u00ff\u00ff\u001dlib/liquid_drops/user_drop.rb1(t\u0000\u0005\u001cE\u0001\u00ff\u00ff\u00ff\u00ff\u00ff\u001dlib/liquid_drops/user_drop.rb\u0007\b\u0013t\u0000\u0000St\u0006\u0001sSt\u0005\u0002_\u0000D\b0\u0003D\r0\u0004D\u00110\u0005D\u00150\u0006D\u00190\u0007D\u001d0\bD!0\tD%0\nD)0\u000bD-0\fD0E\u0002\u00ff\u00ff\u00ff\u00ff\u00ff\u001dlib/liquid_drops/user_drop.rb0(:\u000funsubscribe_url\bUS-ASCII\t\b\u0011t\u0000\u0000St\u0006\u0001sSt\u0005\u0002_\u0000P\u0001\u0000ff\u00ff\u00ff\u00ff\u00ff\u00ff\tl\u0004user\bUS-ASCII\u0000\u0000D\tCS\u0005@user\bUS-ASCIIl\u0004user\bUS-ASCII\u0000(l\u0004user\bUS-ASCII\u0000\t\b\u0011t\u0000\u0000St\u0006\u0001sSt\u0005\u0002_\u0000P\u0000\u0000ff\u00ff\u00ff\u00ff\u00ff\u00ffD\u000e>t\u0000\u0003S\u0005@user\bUS-ASCII\"\u0000\u0002id\bUS-ASCIIt\u0000\u0003\u0000t\u0000\u0004(t\u0000\u0004\n\b\u0011t\u0000\u0000St\u0006\u0001sSt\u0005\u0002_\u0000P\u0000\u0000ff\u00ff\u00ff\u00ff\u00ff\u00ffD\u0012>t\u0000\u0003S\u0005@user\bUS-ASCII\"\u0000\u0004data\bUS-ASCIIt\u0000\u0003\u0000t\u0000\u0004\"\u0000\nemail_name\bUS-ASCIIt\u0000\u0004\u0000t\u0000\u0005(t\u0000\u0005\u001b\b\u0011t\u0000\u0000St\u0006\u0001sSt\u0005\u0002_\u0000P\u0000\u0000ff\u00ff\u00ff\u00ff\u00ff\u00ffD\u0016>t\u0000\u0003S\u0005@user\bUS-ASCII\u0004L\u0003LBL\u0001t\u0000\u0003\"\u0000\rsubscriptions\bUS-ASCIIt\u0000\u0003\u0000t\u0000\u0004\u0004L\u0003LBL\u0001t\u0000\u0004\"\u0000\u0006active\bUS-ASCIIt\u0000\u0004\u0000t\u0000\u0005\u0004L\u0003LBL\u0001t\u0000\u0005\"\u0000\u0005first\bUS-ASCIIt\u0000\u0005\u0000t\u0000\u0006\u0004L\u0003LBL\u0001t\u0000\u0006\"\u0000\u0010next_period_date\bUS-ASCIIt\u0000\u0006\u0000t\u0000\u0007\u0004L\u0003LBL\u0001t\u0000\u0007St\u0000\t'z\b%d %B %Y\u0005UTF-8\u0010\u001dlib/liquid_drops/user_drop.rb\u0016\u001f\u0000\bstrftime\bUS-ASCIIt\u0000\u0007\u0001t\u0000\tt\u0000\b\u0001L\u0003LBL\u00025L\u0003LBL\u0001St\u0000\bN5L\u0003LBL\u0002\u0005L\u0003LBL\u0000t\u0000\bSt\u0000\n'z\tcancelled\u0005UTF-8\u0010\u001dlib/liquid_drops/user_drop.rb\u0016St\u0000\bt\u0000\n5L\u0003LBL\u0000(t\u0000\b\r\b\u0011t\u0000\u0000St\u0006\u0001sSt\u0005\u0002_\u0000P\u0000\u0000ff\u00ff\u00ff\u00ff\u00ff\u00ffD\u001a;t\u0000\u0003\u000bLiquidDrops\bUS-ASCIIsf<t\u0000\u0004t\u0000\u0003\u000bAddressDrop\bUS-ASCIItt>t\u0000\u0006S\u0005@user\bUS-ASCII\"\u0000\taddresses\bUS-ASCIIt\u0000\u0006\u0000t\u0000\u0007\"\u0000\u0005first\bUS-ASCIIt\u0000\u0007\u0000t\u0000\b\u001f\u0000\u0003new\bUS-ASCIIt\u0000\u0004\u0001t\u0000\bt\u0000\u0005(t\u0000\u0005\r\b\u0011t\u0000\u0000St\u0006\u0001sSt\u0005\u0002_\u0000P\u0000\u0000ff\u00ff\u00ff\u00ff\u00ff\u00ffD\u001e;t\u0000\u0003\u0005Rails\bUS-ASCIIsf\"\u0000\u000bapplication\bUS-ASCIIt\u0000\u0003\u0000t\u0000\u0004\"\u0000\u0006routes\bUS-ASCIIt\u0000\u0004\u0000t\u0000\u0005\"\u0000\u000burl_helpers\bUS-ASCIIt\u0000\u0005\u0000t\u0000\u0006St\u0000\b'z\u0005plan2\u0005UTF-8\u0010\u001dlib/liquid_drops/user_drop.rb\u001e\u001f\u0000\u0016subscriptions_edit_url\bUS-ASCIIt\u0000\u0006\u0001{\u0001:\bnew_plan\bUS-ASCIIt\u0000\btt\u0000\u0007(t\u0000\u0007\r\b\u0011t\u0000\u0000St\u0006\u0001sSt\u0005\u0002_\u0000P\u0000\u0000ff\u00ff\u00ff\u00ff\u00ff\u00ffD\";t\u0000\u0003\u0005Rails\bUS-ASCIIsf\"\u0000\u000bapplication\bUS-ASCIIt\u0000\u0003\u0000t\u0000\u0004\"\u0000\u0006routes\bUS-ASCIIt\u0000\u0004\u0000t\u0000\u0005\"\u0000\u000burl_helpers\bUS-ASCIIt\u0000\u0005\u0000t\u0000\u0006St\u0000\b'z\u0005plan4\u0005UTF-8\u0010\u001dlib/liquid_drops/user_drop.rb\"\u001f\u0000\u0016subscriptions_edit_url\bUS-ASCIIt\u0000\u0006\u0001{\u0001:\bnew_plan\bUS-ASCIIt\u0000\btt\u0000\u0007(t\u0000\u0007\r\b\u0011t\u0000\u0000St\u0006\u0001sSt\u0005\u0002_\u0000P\u0000\u0000ff\u00ff\u00ff\u00ff\u00ff\u00ffD&;t\u0000\u0003\u0005Rails\bUS-ASCIIsf\"\u0000\u000bapplication\bUS-ASCIIt\u0000\u0003\u0000t\u0000\u0004\"\u0000\u0006routes\bUS-ASCIIt\u0000\u0004\u0000t\u0000\u0005\"\u0000\u000burl_helpers\bUS-ASCIIt\u0000\u0005\u0000t\u0000\u0006St\u0000\b'z\u0005plan3\u0005UTF-8\u0010\u001dlib/liquid_drops/user_drop.rb&\u001f\u0000\u0016subscriptions_edit_url\bUS-ASCIIt\u0000\u0006\u0001{\u0001:\bnew_plan\bUS-ASCIIt\u0000\btt\u0000\u0007(t\u0000\u0007\f\b\u0011t\u0000\u0000St\u0006\u0001sSt\u0005\u0002_\u0000P\u0000\u0000ff\u00ff\u00ff\u00ff\u00ff\u00ffD*;t\u0000\u0003\u0005Rails\bUS-ASCIIsf\"\u0000\u000bapplication\bUS-ASCIIt\u0000\u0003\u0000t\u0000\u0004\"\u0000\u0006routes\bUS-ASCIIt\u0000\u0004\u0000t\u0000\u0005\"\u0000\u000burl_helpers\bUS-ASCIIt\u0000\u0005\u0000t\u0000\u0006\"\u0000\u0010edit_profile_url\bUS-ASCIIt\u0000\u0006\u0000t\u0000\u0007(t\u0000\u0007\u000e\b\u0011t\u0000\u0000St\u0006\u0001sSt\u0005\u0002_\u0000P\u0000\u0000ff\u00ff\u00ff\u00ff\u00ff\u00ffD.;t\u0000\u0003\u0005Rails\bUS-ASCIIsf\"\u0000\u000bapplication\bUS-ASCIIt\u0000\u0003\u0000t\u0000\u0004\"\u0000\u0006routes\bUS-ASCIIt\u0000\u0004\u0000t\u0000\u0005\"\u0000\u000burl_helpers\bUS-ASCIIt\u0000\u0005\u0000t\u0000\u0006>t\u0000\bS\u0005@user\bUS-ASCII\"\u0000\u0011unsubscribe_token\bUS-ASCIIt\u0000\b\u0000t\u0000\t\u001f\u0000\u000funsubscribe_url\bUS-ASCIIt\u0000\u0006\u0001{\u0001:\u0005token\bUS-ASCIIt\u0000\ttt\u0000\u0007(t\u0000\u0007\r\u0007\u0000\u0004\u0000\u001dlib/liquid_drops/user_drop.rb\u0000\u0000\u00ff\u00ff\u00ff\u00ff\u00ff\u00ff\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u00ff\u0000\f\u0004\u0000\u0006\u0000\u000bLiquidDrops\bUS-ASCII\u0000\u0000\u0000\u00ff\u00ff\u00ff\u00ff\u00ff\u00ff\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u00ff\u0000*\u0005\u0007\u0003\u0000\bUserDrop\bUS-ASCII\u0001\u0000\u0000\u00ff\u00ff\u00ff\u00ff\u00ff\u00ff\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u00ff\u0000\u00ff\u0000\u0000\u0000\u00c6\u0002\b\u0003\u0000\ninitialize\bUS-ASCII\u0002\u0000\u0001\u0004user\u00ff\u00ff\u00ff\u00ff\u00ff\u00ff\u0000\u0001\u0000\u0000\u0000\u0000\u0000\u00ff\u0001\u0004user\bUS-ASCII\u0000\u00ff\u0000\u0000\u0001h\u0002\r\u0005\u0000\u0002id\bUS-ASCII\u0002\u0000\u0000\u00ff\u00ff\u00ff\u00ff\u00ff\u00ff\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u00ff\u0000\u00ff\u0000\u0000\u0001\u00c9\u0002\u0011\u0006\u0000\nemail_name\bUS-ASCII\u0002\u0000\u0000\u00ff\u00ff\u00ff\u00ff\u00ff\u00ff\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u00ff\u0000\u00ff\u0000\u0000\u0002\u0013\u0002\u0015\u000b\u0003\u0010next_period_date\bUS-ASCII\u0002\u0000\u0000\u00ff\u00ff\u00ff\u00ff\u00ff\u00ff\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u00ff\u0000\u00ff\u0000\u0000\u0002|\u0002\u0019\t\u0000\u0007address\bUS-ASCII\u0002\u0000\u0000\u00ff\u00ff\u00ff\u00ff\u00ff\u00ff\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u00ff\u0000\u00ff\u0000\u0000\u0004\u0012\u0002\u001d\t\u0000\tplan2_url\bUS-ASCII\u0002\u0000\u0000\u00ff\u00ff\u00ff\u00ff\u00ff\u00ff\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u00ff\u0000\u00ff\u0000\u0000\u0004\u00cd\u0002!\t\u0000\tplan4_url\bUS-ASCII\u0002\u0000\u0000\u00ff\u00ff\u00ff\u00ff\u00ff\u00ff\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u00ff\u0000\u00ff\u0000\u0000\u0005\u00cc\u0002%\t\u0000\tplan3_url\bUS-ASCII\u0002\u0000\u0000\u00ff\u00ff\u00ff\u00ff\u00ff\u00ff\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u00ff\u0000\u00ff\u0000\u0000\u0006\u00cb\u0002)\b\u0000\u0010edit_profile_url\bUS-ASCII\u0002\u0000\u0000\u00ff\u00ff\u00ff\u00ff\u00ff\u00ff\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u00ff\u0000\u00ff\u0000\u0000\u0007\u00ca\u0002-\n\u0000\u000funsubscribe_url\bUS-ASCII\u0002\u0000\u0000\u00ff\u00ff\u00ff\u00ff\u00ff\u00ff\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u00ff\u0000\u00ff\u0000\u0000\bx").toString();
    }
    
    public static void main(final String[] array) {
        final Ruby instance = Ruby.newInstance();
        instance.runInterpreter((ParseResult)IRRuntimeHelpers.decodeScopeFromBytes(instance, user_drop.script_ir.getBytes("ISO-8859-1"), "lib/liquid_drops/user_drop.rb"));
    }
    
    public static IRScope loadIR(final Ruby ruby, final String s) {
        return IRRuntimeHelpers.decodeScopeFromBytes(ruby, user_drop.script_ir.getBytes("ISO-8859-1"), s);

This Java class has string which looks like the .rb content. So it should be possible to get the .rb content from this script_ir.

Am I missing something. Why is the .rb script contained in the .class file. Wouldn't this make it possible to just automatically return to .rb from the .class file?