Forum: IronRuby Running IronRuby script from C#

Posted by Timothy Barnes (barnes7td)
on 2010-11-02 19:07
Attachment: C_toRuby.jpg (52,8 KB)
I am trying to get a Ruby file to run through C#.  I was reading through
"Ruby Unleashed" (book), and it appears to be easy.  However, I keep
getting an error on a very simple test. The text of my programs are:

C#:
using System;
using Microsoft.Scripting.Hosting;
using IronRuby;

class Run_Ruby
    {
        static void Main()
        {
            ScriptEngine engine = IronRuby.Ruby.CreateEngine();
            engine.ExecuteFile("C:/Test_Files/hello.rb");
        }
    }
-------------
hello.rb:
puts 'hello'

When I run the program I get:
"MissingMethodException was unhandled"
"undefined method `puts' for main:Object"

I am a novice to C#, but this should be hard.  What am I doing wrong? I
have attached a pic of the Visual Studio Error.
Posted by Tomas Matousek (Guest)
on 2010-11-02 20:52
(Received via mailing list)
What version of IronRuby do you use?
The file has UTF8 BOM at the beginning and IronRuby 1.0 doesn't support 
that (MRI 1.8.6 doesn't either). IronRuby 1.1.1 should work fine.

Tomas
Posted by Dotan N. (Guest)
on 2010-11-02 21:19
(Received via mailing list)
before i think about it too much, it seems you have some unicodish chars 
in
the file?
Posted by Dotan N. (Guest)
on 2010-11-02 21:32
(Received via mailing list)
confirmed. you probably created the file inside VS, or other UTF happy
editor.
if you insist you might want to try the encoding pragma, but i'm not 
sure of
its support

# coding: utf-8
puts 'hello'
Posted by Timothy Barnes (barnes7td)
on 2010-11-03 14:19
Thanks for the replies.

I recreated hello.rb in Scite and the program worked. I have read about 
UTF8 encoding and ruby, but had not ran into it before, and I didn't not 
know what the symbols in front of the hello.rb text meant (see VS error 
message). So thanks for the help.

Tomas: I was using IronRuby 1.0.0.0 but had just downloaded IronRuby 
1.1.1. However, I originally created the file in SharpDevelop and have 
been creating IronRuby programs in SharpDevelop with no issue (running 
in SD Debug), until I tried to call this ruby file from C#.  So I still 
don't quite understand why ruby works one way and not the other, but 
that seems to be a SharpDevelop issue/setting. I am pretty sure 
SharpDevelop is running IronRuby 1.0.0.0. After I couldn't get it to 
work I tried it again in Visual Studio which I
assume also called IronRuby 1.0.0.0. since I still had that version 
installed and my files associated with that version.

Last, Now that IronRuby supports the UTF8 encoding, should my files be 
encoded that way? Or now does it just not matter which encoding I use? 
and does C# have to be encoded UTF8?
Posted by Dotan N. (Guest)
on 2010-11-03 16:11
(Received via mailing list)
this is not an 'issue' with either editors. it is simply a matter of
encoding.
As i previously noted, you've created the file in visual studio, which 
adds:
http://en.wikipedia.org/wiki/Byte_order_mark



please find the time to read this

http://www.joelonsoftware.com/articles/Unicode.html





On Wed, Nov 3, 2010 at 3:19 PM, Timothy Barnes <lists@ruby-forum.com> 
wrote:

> in SD Debug), until I tried to call this ruby file from C#.  So I still
>
don't quite understand why ruby works one way and not the other, but
Posted by Timothy Barnes (barnes7td)
on 2010-11-03 17:11
Dotan,

Thanks for the links. I have been looking for a place to explain 
encoding well for awhile.

I am a self-trained programmer and sometimes it is hard to find good 
info to increase my knowledge base. Thanks for the help.
Posted by Tomas Matousek (Guest)
on 2010-11-03 18:29
(Received via mailing list)
Files don't need to be encoded in UTF8, you can chose any encoding 
supported on your system. IronRuby 1.1.1 supports BOMs and also Ruby 
specific #encoding directives.

I would suggest always using UTF8. Personally I consider any non-Unicode 
based encoding obsolete and frankly don't understand why Ruby went the 
way they did with all that complexity around encodings. It just makes it 
slower and cumbersome to use.

Tomas
Posted by Timothy Barnes (barnes7td)
on 2010-11-03 18:59
Tomas,

I appreciate the suggestion.

The reason I was trying to do this was to create and .exe file that I 
can distribute to other co-workers without them having to understand 
what ruby is. The only other answer I can't find through internet 
searches is whether on not I can suppress the console window while 
running a window application through IronRuby. (similar to the using a 
.rbw file)

It appears that this is not possible. Is that correct?

Timothy
Posted by Dotan N. (Guest)
on 2010-11-03 21:18
(Received via mailing list)
it is possible to embed without a console window :)
Posted by Tomas Matousek (Guest)
on 2010-11-03 21:38
(Received via mailing list)
I mean you can indeed write a Windows app in C# or VB that hosts 
IronRuby and that doesn't need the console window (you can redirect 
standard output to a stream if you would like to display it in some 
window).
The thing that's missing from IronRuby is irw.exe file that would do 
that for you (we have a similar one for Python).

Tomas
Posted by Tomas Matousek (Guest)
on 2010-11-03 21:41
(Received via mailing list)
Not today, but it would be easy to implement. I can do it over the 
weekend if you need it.

Tomas
Posted by Timothy Barnes (barnes7td)
on 2010-11-03 22:37
Tomas,

Do you mean create a irw.exe file?

That would be great. I don't want to take up too much of your time, but 
it would be a great help.

Again, thanks for the replies.

Timothy
Posted by Tomas Matousek (Guest)
on 2010-11-04 00:33
(Received via mailing list)
Yes, should be easy.

Tomas
Posted by Timothy Barnes (barnes7td)
on 2010-11-08 16:52
Tomas,

Where should I look for this file when you are finished?

Timothy
Posted by Tomas Matousek (Guest)
on 2010-11-08 18:30
(Received via mailing list)
It's already there - build Solutions\Ruby.sln from GIT repo 
(https://github.com/ironruby/ironruby/archives/master):

msbuild Solutions.Ruby.sln /p:Configuration=Release

This produces binaries to bin\Release directory.

You'll need to take all IronRuby binaries (not just irw.exe).

Of if you'd rather make an installer (IronRuby.msi) go to Msi directory 
and run

msbuild Installer.proj /p:Configuration=Release

This produces the .msi also into bin\Release.

Tomas
Posted by Timothy Barnes (barnes7td)
on 2010-11-10 20:56
Tomas,

I built the binaries using msbuild (command line). I then copy all of 
the resulting files into my bin folder and now even using ir.exe results 
in an error message:

unknown: no such file to load -- gem_prelude.rb (LoadError)

Can you tell me what I have done wrong?

Also, when I tried to build the .msi installer a .msi file doesn't show 
up in the bin Release Folder. I am unsure if there is something wrong or 
it is my incompetence.

Timothy
Posted by Tomas Matousek (Guest)
on 2010-11-10 22:20
(Received via mailing list)
There are some issues with how library load paths are set up today 
(gem_prelude load error), I'm working on a fix. I might finish it this 
weekend.

Did you pass /p:Configuration=Release to msbuild when building the 
installer? If not look at bin\Debug folder :)

Tomas
Posted by Timothy Barnes (barnes7td)
on 2010-11-10 23:02
I did pass /p:Configuration=Release to msbuild and checked the debug 
folder. I did get 4 errors which might have been the cause.
They were 20-30 lines long so I didn't type them out here. Would it help 
for me to post them?

Also, am I correct in the fact that you have to build the solution 
Ruby.sln before you can build the installer.proj?

Timothy
Posted by Tomas Matousek (Guest)
on 2010-11-11 01:11
(Received via mailing list)
No, you don't need to build anything before you build the installer.

What are the errors? Do you have VS SDK 2010 installed? You need to have 
that so that the VS integration builds.

Tomas
Posted by Timothy Barnes (barnes7td)
on 2010-11-11 20:05
Attachment: msbuild_errors.txt (8,04 KB)
I did not have VS SDK 2010, which I now have installed and the build is 
still failing. I have attached a copy of some of the error text from the 
unsuccessful build, if you want to look.

More info:
Only have Visual C# Express 2010 installed - Not sure if this is 
affecting the build.

Using command prompt to build.

Timothy
Posted by Tomas Matousek (Guest)
on 2010-11-11 20:20
(Received via mailing list)
Can you attach the entire output?

Did you synced to the latest version of the repo?

TOmas
Posted by Timothy Barnes (barnes7td)
on 2010-11-11 21:25
Attachment: msbuild_errors.txt (19,1 KB)
This is all the text left in the command prompt box.

Unless there is a way to record what happens (or different software), I 
don't know how to capture all of the text for the build.

Timothy
Posted by Tomas Matousek (Guest)
on 2010-11-12 18:46
(Received via mailing list)
msbuild Installer.proj /p:Configuration=Release > output.log

Tomas
Posted by Timothy Barnes (barnes7td)
on 2010-11-12 19:44
Attachment: output.log (48,9 KB)
I have attached the output.log file.

Timothy
Posted by Tomas Matousek (Guest)
on 2010-11-21 21:22
(Received via mailing list)
Can you pull the latest source from gthub and try to build again?  I 
fixed some issues, so it should work now.

Tomas
Please log in before posting. Registration is free and takes only a minute.
Existing account (Switch to SSL-encrypted connection)
NEW: Do you have a Google/GoogleMail or Yahoo account? No registration required!
Log in with Google account | Log in with Yahoo account
No account? Register here.