RedCloth 4.1.1 released


#1

This release fixes problems with the echoe development dependency,
requiring RedCloth using CamelCase, and incorrect platform labels on
the win32 and JRuby gems. All these were the result of switching to
echoe (like hoe, but it doesn’t make itself a runtime dependency) to
do the cross-platform compilation and gem packaging.

So, if you had gem, platform, or requiring problems with 4.1.0, try
this version.

Sorry for the growth pains! Thanks to all who helped identify the
problems.

Jason


#2

Thanks for the update. I had to manually install echoe to get this
release working.

Dave


#3

Still have problems installin gon jruby:

$ jruby -S gem update RedCloth
Updating installed gems
Updating RedCloth
Building native extensions. This could take a while…
/Users/stephen/dev/ruby/src/jruby.git/lib/ruby/1.8/mkmf.rb:7: JRuby
does not support native extensions. Check wiki.jruby.org for
alternatives. (NotImplementedError)
from
/Users/stephen/dev/ruby/src/jruby.git/lib/ruby/1.8/mkmf.rb:1:in
`require’
from extconf.rb:1
ERROR: While executing gem … (Gem::Installer::ExtensionBuildError)
ERROR: Failed to build gem native extension.

/Users/stephen/dev/ruby/src/jruby.git/bin/jruby extconf.rb update
RedCloth

Gem files will remain installed in
/Users/stephen/dev/ruby/src/jruby.git/lib/ruby/gems/1.8/gems/RedCloth-4.1.1
for inspection.
Results logged to
/Users/stephen/dev/ruby/src/jruby.git/lib/ruby/gems/1.8/gems/RedCloth-4.1.1/ext/redcloth_scan/gem_make.out

I had installed recently from source so I already had a version name
4.1.0 – see below – but even after deleting it and installing again
I got the same error:

$ jruby -S gem list RedCloth

*** LOCAL GEMS ***

RedCloth (4.1.0)

[jruby.git (master)]$ jruby -S gem uninstall RedCloth
Remove executables:
redcloth

in addition to the gem? [Yn] Y
Removing redcloth
Successfully uninstalled RedCloth-4.1.0-java

[jruby.git (master)]$ jruby -S gem install RedCloth
Building native extensions. This could take a while…
/Users/stephen/dev/ruby/src/jruby.git/lib/ruby/1.8/mkmf.rb:7: JRuby
does not support native extensions. Check wiki.jruby.org for
alternatives. (NotImplementedError)
from
/Users/stephen/dev/ruby/src/jruby.git/lib/ruby/1.8/mkmf.rb:1:in
`require’
from extconf.rb:1
ERROR: Error installing RedCloth:
ERROR: Failed to build gem native extension.

/Users/stephen/dev/ruby/src/jruby.git/bin/jruby extconf.rb install
RedCloth

Gem files will remain installed in
/Users/stephen/dev/ruby/src/jruby.git/lib/ruby/gems/1.8/gems/RedCloth-4.1.1
for inspection.
Results logged to
/Users/stephen/dev/ruby/src/jruby.git/lib/ruby/gems/1.8/gems/RedCloth-4.1.1/ext/redcloth_scan/gem_make.out


#4

Does it work for you now?

BTW, if you had to install the echoe gem to get 4.1.0 working, you
can uninstall it. 4.1.1 doesn’t need it unless your RubyGem version
< 1.2.0 or you install the gem with the --development option.

It works now, thanks!

$ jruby -S gem install RedCloth
Successfully installed RedCloth-4.1.1-universal-java
1 gem installed
Installing ri documentation for RedCloth-4.1.1-universal-java…
Installing RDoc documentation for RedCloth-4.1.1-universal-java…


#5

Yeah, I got that right at first too, but after coming back from lunch
(and waiting for the city-wide Internet connection problem to clear
up) it works fine for me. Perhaps it took a little longer for the
JRuby and Win32 gems to propagate?

$ jruby -S gem install RedCloth
Successfully installed RedCloth-4.1.1-universal-java
1 gem installed
Installing ri documentation for RedCloth-4.1.1-universal-java…
Installing RDoc documentation for RedCloth-4.1.1-universal-java…

Does it work for you now?

BTW, if you had to install the echoe gem to get 4.1.0 working, you can
uninstall it. 4.1.1 doesn’t need it unless your RubyGem version <
1.2.0 or you install the gem with the --development option.


#6

Stephen B. wrote:

Does it work for you now?

BTW, if you had to install the echoe gem to get 4.1.0 working, you
can uninstall it. 4.1.1 doesn’t need it unless your RubyGem version
< 1.2.0 or you install the gem with the --development option.

It works now, thanks!

$ jruby -S gem install RedCloth
Successfully installed RedCloth-4.1.1-universal-java
1 gem installed
Installing ri documentation for RedCloth-4.1.1-universal-java…
Installing RDoc documentation for RedCloth-4.1.1-universal-java…

I was able to get RedCloth 4.1.1 installed, but I seem to be having some
issues. List (both numbered and unordered) have a problem… The error
is VERY lengthy, so I will only include the top 15 lines or so. Here is
the text I’m parsing with RedCloth:

h2. A Title

  • List
    ** List subitem

Here is the code used to parse the text:

RedCloth.new(@page.content).to_html

Here is the error I’m receiving:

Exception in thread “Thread-52” java.lang.NoSuchMethodError:
org.jruby.RubyArray.pop(Lorg/jruby/runtime/ThreadContext;)Lorg/jruby/runtime/builtin/IRubyObject;
at
RedclothScanService$Base.LIST_CLOSE(RedclothScanService.java:71)
at
RedclothScanService$Transformer.transform(RedclothScanService.java:7963)
at RedclothScanService.transform(RedclothScanService.java:8307)
at RedclothScanService.transform2(RedclothScanService.java:8317)
at RedclothScanService.to(RedclothScanService.java:8331)
at
RedclothScanService$s_method_1_0$RUBYINVOKER$to.call(RedclothScanService$s_method_1_0$RUBYINVOKER$to.gen)
at
org.jruby.runtime.CallSite$InlineCachingCallSite.call(CallSite.java:391)
at
org.jruby.ast.FCallOneArgNode.interpret(FCallOneArgNode.java:36)
at org.jruby.ast.NewlineNode.interpret(NewlineNode.java:101)
at org.jruby.ast.BlockNode.interpret(BlockNode.java:67)
at
org.jruby.internal.runtime.methods.DefaultMethod.interpretedCall(DefaultMethod.java:163)
at
org.jruby.internal.runtime.methods.DefaultMethod.call(DefaultMethod.java:140)
at
org.jruby.internal.runtime.methods.DefaultMethod.call(DefaultMethod.java:211)
at
org.jruby.runtime.CallSite$InlineCachingCallSite.call(CallSite.java:340)

It seems that definition lists work fine, as does everything else that I
have tested. Here is some info about my environment:

JRuby 1.1.4 (using Netbeans 6.5 RC2)
Reby version 1.8.6 (java)
RubyGems version 1.2.0
RedCloth 4.1.1

The same code above works fine with RedCloth 3.0.4, however, I really
like the new features in 4.1.1, especially definition lists.

Thanks!


#7

I updated the ticket to say that JRuby 1.1.5 is required. I’ll add it
into the README as well.


#8

Here is some IRB from JRuby to help…

require ‘rubygems’
=> true

require ‘redcloth’
=> true

red = RedCloth.new("* A List")
=> “* A List”

out_meth = “to_html”
=> “to_html”

if red.respond_to? out_meth

?> puts red.method( out_meth ).call
end
RedclothScanService$Base:71:in LIST_CLOSE': java.lang.NoSuchMethodError: org.jruby.RubyArray.pop(Lorg/jruby/runtime/ThreadContext;)Lorg/jruby/runtime/builtin/IRubyObject; from RedclothScanService$Transformer:7963:intransform’
from RedclothScanService:8307:in transform' from RedclothScanService:8317:intransform2’
from RedclothScanService:8331:in to' from RedclothScanService$s_method_1_0$RUBYINVOKER$to:-1:incall’
from org.jruby.runtime.CallSite$InlineCachingCallSite:156:in
cacheAndCall' from org.jruby.runtime.CallSite$InlineCachingCallSite:394:incall’
from org.jruby.ast.FCallOneArgNode:36:in interpret' from org.jruby.ast.NewlineNode:101:ininterpret’
from org.jruby.ast.BlockNode:67:in interpret' from org.jruby.internal.runtime.methods.DefaultMethod:163:ininterpretedCall’
from org.jruby.internal.runtime.methods.DefaultMethod:140:in
call' from org.jruby.internal.runtime.methods.DefaultMethod:232:incall’
from org.jruby.RubyMethod:106:in call' from org.jruby.RubyMethod$i_method_multi$RUBYINVOKER$call:-1:incall’
from org.jruby.internal.runtime.methods.DynamicMethod:202:in
call' from org.jruby.runtime.CallSite$InlineCachingCallSite:132:incacheAndCall’
from org.jruby.runtime.CallSite$InlineCachingCallSite:343:in
call' from org.jruby.ast.CallNoArgNode:61:ininterpret’
from org.jruby.ast.FCallOneArgNode:36:in interpret' from org.jruby.ast.NewlineNode:101:ininterpret’
from org.jruby.ast.IfNode:108:in interpret' from org.jruby.ast.NewlineNode:101:ininterpret’
from org.jruby.ast.RootNode:126:in interpret' from org.jruby.evaluator.ASTInterpreter:123:inevalWithBinding’
from org.jruby.RubyKernel:862:in eval' from org.jruby.RubyKernel$s_method_0_3$RUBYFRAMEDINVOKER$eval:-1:incall’
from org.jruby.internal.runtime.methods.DynamicMethod:135:in
call' from org.jruby.runtime.CallSite$InlineCachingCallSite:289:incall’
from org.jruby.ast.FCallManyArgsNode:60:in interpret' from org.jruby.ast.NewlineNode:101:ininterpret’
from org.jruby.internal.runtime.methods.DefaultMethod:163:in
interpretedCall' from org.jruby.internal.runtime.methods.DefaultMethod:140:incall’
from org.jruby.internal.runtime.methods.DefaultMethod:190:in
call' from org.jruby.runtime.CallSite$InlineCachingCallSite:289:incall’
from org.jruby.ast.CallManyArgsNode:59:in interpret' from org.jruby.ast.FCallOneArgNode:36:ininterpret’
from org.jruby.ast.NewlineNode:101:in interpret' from org.jruby.ast.BlockNode:67:ininterpret’
from org.jruby.internal.runtime.methods.DefaultMethod:163:in
interpretedCall' from org.jruby.internal.runtime.methods.DefaultMethod:140:incall’
from org.jruby.internal.runtime.methods.DefaultMethod:295:in
call' from org.jruby.runtime.CallSite$InlineCachingCallSite:442:incall’
from org.jruby.ast.CallTwoArgNode:59:in interpret' from org.jruby.ast.NewlineNode:101:ininterpret’
from org.jruby.ast.BlockNode:67:in interpret' from org.jruby.ast.RescueNode:222:inexecuteBody’
from org.jruby.ast.RescueNode:144:in
interpretWithJavaExceptions' from org.jruby.ast.RescueNode:107:ininterpret’
from org.jruby.ast.BeginNode:80:in interpret' from org.jruby.ast.NewlineNode:101:ininterpret’
from org.jruby.ast.BlockNode:67:in interpret' from org.jruby.runtime.InterpretedBlock:202:inevalBlockBody’
from org.jruby.runtime.InterpretedBlock:190:in yield' from org.jruby.runtime.Block:110:inyield’
from org.jruby.ast.YieldNode:95:in interpret' from org.jruby.ast.NewlineNode:101:ininterpret’
from org.jruby.ast.EnsureNode:93:in interpret' from org.jruby.ast.BeginNode:80:ininterpret’
from org.jruby.ast.NewlineNode:101:in interpret' from org.jruby.ast.BlockNode:67:ininterpret’
from org.jruby.internal.runtime.methods.DefaultMethod:163:in
interpretedCall' from org.jruby.internal.runtime.methods.DefaultMethod:140:incall’
from org.jruby.internal.runtime.methods.DefaultMethod:274:in
call' from org.jruby.runtime.CallSite$InlineCachingCallSite:422:incallIter’
from org.jruby.ast.FCallOneArgBlockNode:33:in interpret' from org.jruby.ast.NewlineNode:101:ininterpret’
from org.jruby.runtime.InterpretedBlock:202:in evalBlockBody' from org.jruby.runtime.InterpretedBlock:190:inyield’
from org.jruby.runtime.Block:110:in yield' from org.jruby.ast.YieldNode:95:ininterpret’
from org.jruby.ast.NewlineNode:101:in interpret' from org.jruby.ast.IfNode:108:ininterpret’
from org.jruby.ast.NewlineNode:101:in interpret' from org.jruby.ast.BlockNode:67:ininterpret’
from org.jruby.ast.RescueNode:222:in executeBody' from org.jruby.ast.RescueNode:144:ininterpretWithJavaExceptions’
from org.jruby.ast.RescueNode:107:in interpret' from org.jruby.ast.BeginNode:80:ininterpret’
from org.jruby.ast.NewlineNode:101:in interpret' from org.jruby.runtime.InterpretedBlock:202:inevalBlockBody’
from org.jruby.runtime.InterpretedBlock:153:in yield' from org.jruby.runtime.Block:105:inyield’
from org.jruby.RubyKernel:1039:in loop' from org.jruby.RubyKernel$s_method_0_0$RUBYFRAMEDINVOKER$loop:-1:incall’
from org.jruby.runtime.CallSite$InlineCachingCallSite:144:in
cacheAndCall' from org.jruby.runtime.CallSite$InlineCachingCallSite:374:incallIter’
from org.jruby.ast.FCallNoArgBlockNode:31:in interpret' from org.jruby.ast.NewlineNode:101:ininterpret’
from org.jruby.runtime.InterpretedBlock:202:in evalBlockBody' from org.jruby.runtime.InterpretedBlock:153:inyield’
from org.jruby.runtime.Block:105:in yield' from org.jruby.RubyKernel:890:inrbCatch’
from
org.jruby.RubyKernel$s_method_1_0$RUBYFRAMEDINVOKER$rbCatch:-1:in call' from org.jruby.runtime.CallSite$InlineCachingCallSite:168:incacheAndCall’
from org.jruby.runtime.CallSite$InlineCachingCallSite:425:in
callIter' from org.jruby.ast.FCallOneArgBlockNode:33:ininterpret’
from org.jruby.ast.NewlineNode:101:in interpret' from org.jruby.ast.BlockNode:67:ininterpret’
from org.jruby.internal.runtime.methods.DefaultMethod:163:in
interpretedCall' from org.jruby.internal.runtime.methods.DefaultMethod:140:incall’
from org.jruby.internal.runtime.methods.DefaultMethod:232:in
call' from org.jruby.runtime.CallSite$InlineCachingCallSite:144:incacheAndCall’
from org.jruby.runtime.CallSite$InlineCachingCallSite:355:in
call' from org.jruby.ast.CallNoArgBlockNode:63:ininterpret’
from org.jruby.ast.NewlineNode:101:in interpret' from org.jruby.ast.BlockNode:67:ininterpret’
from org.jruby.internal.runtime.methods.DefaultMethod:163:in
interpretedCall' from org.jruby.internal.runtime.methods.DefaultMethod:140:incall’
from org.jruby.internal.runtime.methods.DefaultMethod:211:in
call' from org.jruby.runtime.CallSite$InlineCachingCallSite:132:incacheAndCall’
from org.jruby.runtime.CallSite$InlineCachingCallSite:343:in
call' from org.jruby.ast.CallNoArgNode:61:ininterpret’
from org.jruby.ast.NewlineNode:101:in interpret' from org.jruby.runtime.InterpretedBlock:202:inevalBlockBody’
from org.jruby.runtime.InterpretedBlock:153:in yield' from org.jruby.runtime.Block:105:inyield’
from org.jruby.RubyKernel:890:in rbCatch' from org.jruby.RubyKernel$s_method_1_0$RUBYFRAMEDINVOKER$rbCatch:-1:incall’
from org.jruby.runtime.CallSite$InlineCachingCallSite:168:in
cacheAndCall' from org.jruby.runtime.CallSite$InlineCachingCallSite:425:incallIter’
from org.jruby.ast.FCallOneArgBlockNode:33:in interpret' from org.jruby.ast.NewlineNode:101:ininterpret’
from org.jruby.ast.BlockNode:67:in interpret' from org.jruby.internal.runtime.methods.DefaultMethod:163:ininterpretedCall’
from org.jruby.internal.runtime.methods.DefaultMethod:140:in
call' from org.jruby.internal.runtime.methods.DefaultMethod:253:incall’
from org.jruby.runtime.CallSite$InlineCachingCallSite:156:in
cacheAndCall' from org.jruby.runtime.CallSite$InlineCachingCallSite:394:incall’
from
C_3a_.Program_20_Files.NetBeans_20_6_dot_5_20_RC1.ruby2.jruby_minus_1_dot_1_dot_4.bin.jirb:19:in
__file__' from C_3a_.Program_20_Files.NetBeans_20_6_dot_5_20_RC1.ruby2.jruby_minus_1_dot_1_dot_4.bin.jirb:-1:infile
from
C_3a_.Program_20_Files.NetBeans_20_6_dot_5_20_RC1.ruby2.jruby_minus_1_dot_1_dot_4.bin.jirb:-1:in
load' from org.jruby.Ruby:544:inrunScript’
from org.jruby.Ruby:457:in runNormally' from org.jruby.Ruby:330:inrunFromMain’
from org.jruby.Main:214:in run' from org.jruby.Main:100:inrun’
from org.jruby.Main:84:in `main’


#9

Jason G. wrote:

This release fixes problems with the echoe development dependency,
requiring RedCloth using CamelCase, and incorrect platform labels on
the win32 and JRuby gems. All these were the result of switching to
echoe (like hoe, but it doesn’t make itself a runtime dependency) to
do the cross-platform compilation and gem packaging.
It looks like echoe would still be a dependency to me:

:~$ redcloth --version
RedCloth 4.1.1
:~$ sudo gem uninstall echoe
[sudo] password for utopia:

You have requested to uninstall the gem:
echoe-3.0.2
RedCloth-4.1.1 depends on [echoe (>= 0)]
If you remove this gems, one or more dependencies will not be met.
Continue with Uninstall? [Yn] Y
Successfully uninstalled echoe-3.0.2
:~$ redcloth --version
/usr/lib/ruby/1.8/rubygems.rb:578:in report_activate_error': Could not find RubyGem echoe (>= 0) (Gem::LoadError) from /usr/lib/ruby/1.8/rubygems.rb:134:inactivate’
from /usr/lib/ruby/1.8/rubygems.rb:158:in activate' from /usr/lib/ruby/1.8/rubygems.rb:157:ineach’
from /usr/lib/ruby/1.8/rubygems.rb:157:in activate' from /usr/lib/ruby/1.8/rubygems.rb:49:ingem’
from /usr/bin/redcloth:18

Is that right? The programm that uses RedCloth also still reports that
RedCloth could not be found if echoe is not installed.


#10

I lost this one in my inbox; sorry!

Do you still have the same problem with 4.1.9? I’m not aware that I
changed anything to fix it, but just now I uninstalled echoe and
RedCloth and then installed RedCloth 4.1.9 and it installed just fine
without echoe. If it doesn’t work for you, please let me know!

I regret that echoe caused so much trouble. I went with it instead of
hoe because it didn’t make itself a dependency (or so they said). A
bug in RubyGems 1.2 made it one, though.

Jason


#11

Jason G. wrote:

I updated the ticket to say that JRuby 1.1.5 is required. I’ll add it
into the README as well.

That fixed it. I installed JRuby 1.1.5, upgraded to rails 2.2.2 and
rubygems 1.3.1 and now the lists work!