hi
This is on fedore 17, standard installation.
This web-app run flawlessly with ruby 1.8.7, but i cannot make it run
with ruby 1.9.3. It is a web-mysql-database application.

The following problems:
1) I cannot make run gettext (the app with ruby 1.8.7 runs in various
languages)
2) cgi output is garbled, unusable.

1) gettext
I include the gettext library using require "gettext/cgi"
To control, whether ruby-gettext is installed, I do

[root@myhost ~]# rpm -qa |grep gettext
gettext-0.18.1.1-12.fc17.x86_64
gettext-libs-0.18.1.1-12.fc17.x86_64
rubygem-gettext-2.2.0-2.fc17.noarch
perl-gettext-1.05-24.fc17.x86_64
[root@myhost ~]#

gettext works fine in perl and php, not in ruby.

Because that did not work, I additionally did
[root@myhost ~]# gem install gettext
Fetching: gettext-2.2.1.gem (100%)
Successfully installed gettext-2.2.1
1 gem installed
Installing ri documentation for gettext-2.2.1...
Installing RDoc documentation for gettext-2.2.1...
[root@myhost ~]#
[root@myhost ~]# gem install "gettext/cgi"
ERROR:  Could not find a valid gem 'gettext/cgi' (>= 0) in any
repository
ERROR:  Possible alternatives: gettext
[root@myhost ~]#

To the same issue: gettext does not work.
I thought, I had missed to install an essential library, but could not
find any hint.

What am I missing?


2. cgi output garbled
cgi output starts fine, until it comes to the essential: the dispatcher
of the app. That's where a " (double-quote) character is inserted into
the cgi text, which makes, that from then on all parameter values in the
cgi are escaped with a \ (backslash), unusable for the browser. When the
dispatcher of the app is finished, again a closing " (double-quote) is
dropped into the cgi text, and from then on everyghing is fine. But the
core of the app is unrecognizable by the browser. There are some buttons
in the app, which are created by a different class, they also are
correct. Only the part created by the main application is incorrect.

follows the cgi-text created by ruby 1.9.3:

<snip>
["
<TABLE class=\"topnav\" id=\"table1\" name=\"table1\"><TR><TD
class=\"n\">
<input type='button' class='navbtx' name='down' value='down'
onclick='window.location=\"#down\"' />\n
<input type='button' class='navbtx' name='onemonthago'
value='onemonthago' onclick='oneMonthAgo(this)' />\n
<input type='button' class='navbtx' name='allago' value='all_ago'
onclick='allAgo(this)' />\n
<input type='button' class='navbtx' name='onemonthahead'
value='onemonthahead' onclick='oneMonthAhead(this)' />\n\n
<input type='button' class='navbtx' name='inbetween' value='between'
onclick='inBetween(this)' />\n\n
<input type='button' class='navbtx' name='newentry' value='new entry'
onclick='newEntry(this)' />\n
</TD>\n</TR></TABLE><!-- table1 -->\n\n
<TABLE class=\"status\" id=\"table2\" name=\"table2\"><TR><TD
class=\"n\">
<A href=\"/cgi/actix.rbx?sid=adx_sid.suomi\">actual</A>: today's tasks
for root -> zurrough results found</TD></TR></TABLE><!-- table2
-->\n\n\n\n\n\n\n
<TABLE CLASS=\"topnav\" id=\"table3\" name=\"table3\"><TR><TD
class=\"n\">
<input type='button' class='navbtx' name='up' value='up'
onclick='window.location=\"#top\"' />\n</TD></TR></TABLE><!-- table3
-->\n
<INPUT ID=\"counter\" NAME=\"counter\" TYPE=\"hidden\">
", nil]
</snip>

The main part of the app, in ruby, which generates the wrong cgi-text
is:
(NOTE: the actual class is a sub-class of CGIext, which in turn is a
sub-class of the regular CGI class)

<snip>
        h1{@expires}+
        "#{  # Dispatcher START
        [1,2].collect {
          actix = params["maxipaxi"][0]
          params["maxipaxi"][0] = ""
          case actix
          when "start"
            ab = ActualBase.new(self, dbx, sess)
            ab.contentx(params)
          when "allago"
            ab = ActualBase.new(dbx)
            ab.contentx(params)
          when "nextmonth"
            ab = ActualBase.new(dbx)
            ab.contentx(params)
          when "lastmonth"
            ab = ActualBase.new(dbx)
            ab.contentx(params)
          when "printspecific"
            ab = ActualPX.new(dbx)
            ab.contentx(params)
          when "newentry"
            ab = ActualNew.new(dbx)
            ab.contentx(params)
          when "storenew"
            ab = ActualStoreNew.new(dbx)
            ab.contentx(params)
          when "storechanges"
            ab = ActualStoreChanges.new(dbx)
            ab.contentx(params)
          when "printableversion"
            ab = ActualPrintable.new(dbx)
            ab.contentx(params)
          when "removethis"
            ab = ActualRemove.new(dbx)
            ab.contentx(params)
          when "betweenpopup"
            ab = ActualBase.new(dbx)
            ab.contentx(params)
          when "betweencompute"
            ab = ActualBase.new(dbx)
            ab.contentx(params)
          end
        }

        }"+  # Dispatcher END
        hidden("name"=>"hislis", "id"=>"hislis",
"value"=>CGI::escapeHTML(params["hislis"][0]))+"\n"

</snip>

I was investigating about 4 days what I could have done wrong: no
success. Should I better go back to ruby 1.8.7?

If you need more info, do not hesitate to drop a mail.

Thanks everybody in advance.

suomi

-- 
Posted via http://www.ruby-forum.com/.