# Running IronRuby script from C#

**URL:** <https://www.ruby-forum.com/t/running-ironruby-script-from-c/198506>\
**Category:** IronRuby\
**Created:** [November 2, 2010, 7:07pm UTC](https://www.ruby-forum.com/t/running-ironruby-script-from-c/198506 "2010-11-02T19:07:05Z")\
**Posts on this page:** 20\
**Page:** 1

<div class="post-metadata">

**Author:** ![Dobai-Pataky\_BSSSSl](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/d/77aa72/32.png) [@Dobai-Pataky\_BSSSSl](https://www.ruby-forum.com/u/Dobai-Pataky_BSSSSl)\
**Post date:** [November 2, 2010, 7:07pm UTC](https://www.ruby-forum.com/t/running-ironruby-script-from-c/198506/1 "2010-11-02T19:07:05Z")

</div>

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.

---

<div class="post-metadata">

**Author:** ![tuatha](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/t/b4bc9f/32.png) [@tuatha](https://www.ruby-forum.com/u/tuatha)\
**Post date:** [November 2, 2010, 8:52pm UTC](https://www.ruby-forum.com/t/running-ironruby-script-from-c/198506/2 "2010-11-02T20:52:23Z")

</div>

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

---

<div class="post-metadata">

**Author:** ![tuatha](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/t/b4bc9f/32.png) [@tuatha](https://www.ruby-forum.com/u/tuatha)\
**Post date:** [November 2, 2010, 9:19pm UTC](https://www.ruby-forum.com/t/running-ironruby-script-from-c/198506/3 "2010-11-02T21:19:26Z")

</div>

before i think about it too much, it seems you have some unicodish chars  
in  
the file?

---

<div class="post-metadata">

**Author:** ![tuatha](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/t/b4bc9f/32.png) [@tuatha](https://www.ruby-forum.com/u/tuatha)\
**Post date:** [November 3, 2010, 2:19pm UTC](https://www.ruby-forum.com/t/running-ironruby-script-from-c/198506/4 "2010-11-03T14:19:03Z")

</div>

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?

---

<div class="post-metadata">

**Author:** ![tuatha](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/t/b4bc9f/32.png) [@tuatha](https://www.ruby-forum.com/u/tuatha)\
**Post date:** [November 2, 2010, 9:32pm UTC](https://www.ruby-forum.com/t/running-ironruby-script-from-c/198506/5 "2010-11-02T21:32:39Z")

</div>

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’

---

<div class="post-metadata">

**Author:** ![tuatha](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/t/b4bc9f/32.png) [@tuatha](https://www.ruby-forum.com/u/tuatha)\
**Post date:** [November 3, 2010, 4:11pm UTC](https://www.ruby-forum.com/t/running-ironruby-script-from-c/198506/6 "2010-11-03T16:11:22Z")

</div>

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:

> **[Byte order mark](https://en.wikipedia.org/wiki/Byte_order_mark)**
>
> The byte order mark (BOM) is a particular usage of the special Unicode character code, .mw-parser-output .monospaced{font-family:monospace,monospace}U+FEFF .mw-parser-output .unichar-name{font-variant:small-caps;text-transform:lowercase;font-feature-settings:"onum"}ZERO WIDTH NO-BREAK SPACE, whose appearance as a magic number at the start of a text stream can signal several things to a program reading the text: BOM use is optional. Its presence interferes with the use of UTF-8 by software that ...

please find the time to read this

> **[The Absolute Minimum Every Software Developer Absolutely, Positively Must...](https://www.joelonsoftware.com/2003/10/08/the-absolute-minimum-every-software-developer-absolutely-positively-must-know-about-unicode-and-character-sets-no-excuses/)**
>
> Ever wonder about that mysterious Content-Type tag? You know, the one you’re supposed to put in HTML and you never quite know what it should be? Did you ever get an email from your friends in…

On Wed, Nov 3, 2010 at 3:19 PM, Timothy B. [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid)  
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

---

<div class="post-metadata">

**Author:** ![tuatha](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/t/b4bc9f/32.png) [@tuatha](https://www.ruby-forum.com/u/tuatha)\
**Post date:** [November 3, 2010, 5:11pm UTC](https://www.ruby-forum.com/t/running-ironruby-script-from-c/198506/7 "2010-11-03T17:11:32Z")

</div>

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.

---

<div class="post-metadata">

**Author:** ![tuatha](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/t/b4bc9f/32.png) [@tuatha](https://www.ruby-forum.com/u/tuatha)\
**Post date:** [November 3, 2010, 6:29pm UTC](https://www.ruby-forum.com/t/running-ironruby-script-from-c/198506/8 "2010-11-03T18:29:05Z")

</div>

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

---

<div class="post-metadata">

**Author:** ![tuatha](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/t/b4bc9f/32.png) [@tuatha](https://www.ruby-forum.com/u/tuatha)\
**Post date:** [November 3, 2010, 6:59pm UTC](https://www.ruby-forum.com/t/running-ironruby-script-from-c/198506/9 "2010-11-03T18:59:20Z")

</div>

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

---

<div class="post-metadata">

**Author:** ![tuatha](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/t/b4bc9f/32.png) [@tuatha](https://www.ruby-forum.com/u/tuatha)\
**Post date:** [November 3, 2010, 9:18pm UTC](https://www.ruby-forum.com/t/running-ironruby-script-from-c/198506/10 "2010-11-03T21:18:06Z")

</div>

it is possible to embed without a console window 🙂

---

<div class="post-metadata">

**Author:** ![tuatha](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/t/b4bc9f/32.png) [@tuatha](https://www.ruby-forum.com/u/tuatha)\
**Post date:** [November 3, 2010, 9:41pm UTC](https://www.ruby-forum.com/t/running-ironruby-script-from-c/198506/11 "2010-11-03T21:41:20Z")

</div>

Not today, but it would be easy to implement. I can do it over the  
weekend if you need it.

Tomas

---

<div class="post-metadata">

**Author:** ![tuatha](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/t/b4bc9f/32.png) [@tuatha](https://www.ruby-forum.com/u/tuatha)\
**Post date:** [November 3, 2010, 9:38pm UTC](https://www.ruby-forum.com/t/running-ironruby-script-from-c/198506/12 "2010-11-03T21:38:49Z")

</div>

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

---

<div class="post-metadata">

**Author:** ![tuatha](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/t/b4bc9f/32.png) [@tuatha](https://www.ruby-forum.com/u/tuatha)\
**Post date:** [November 3, 2010, 10:37pm UTC](https://www.ruby-forum.com/t/running-ironruby-script-from-c/198506/13 "2010-11-03T22:37:24Z")

</div>

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

---

<div class="post-metadata">

**Author:** ![tuatha](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/t/b4bc9f/32.png) [@tuatha](https://www.ruby-forum.com/u/tuatha)\
**Post date:** [November 4, 2010, 12:33am UTC](https://www.ruby-forum.com/t/running-ironruby-script-from-c/198506/14 "2010-11-04T00:33:46Z")

</div>

Yes, should be easy.

Tomas

---

<div class="post-metadata">

**Author:** ![tuatha](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/t/b4bc9f/32.png) [@tuatha](https://www.ruby-forum.com/u/tuatha)\
**Post date:** [November 8, 2010, 4:52pm UTC](https://www.ruby-forum.com/t/running-ironruby-script-from-c/198506/15 "2010-11-08T16:52:19Z")

</div>

Tomas,

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

Timothy

---

<div class="post-metadata">

**Author:** ![tuatha](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/t/b4bc9f/32.png) [@tuatha](https://www.ruby-forum.com/u/tuatha)\
**Post date:** [November 8, 2010, 6:30pm UTC](https://www.ruby-forum.com/t/running-ironruby-script-from-c/198506/16 "2010-11-08T18:30:32Z")

</div>

It’s already there - build Solutions\Ruby.sln from GIT repo  
([https://github.com/ironruby/ironruby/archives/master](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

---

<div class="post-metadata">

**Author:** ![tuatha](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/t/b4bc9f/32.png) [@tuatha](https://www.ruby-forum.com/u/tuatha)\
**Post date:** [November 10, 2010, 8:56pm UTC](https://www.ruby-forum.com/t/running-ironruby-script-from-c/198506/17 "2010-11-10T20:56:37Z")

</div>

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

---

<div class="post-metadata">

**Author:** ![tuatha](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/t/b4bc9f/32.png) [@tuatha](https://www.ruby-forum.com/u/tuatha)\
**Post date:** [November 10, 2010, 11:02pm UTC](https://www.ruby-forum.com/t/running-ironruby-script-from-c/198506/18 "2010-11-10T23:02:01Z")

</div>

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

---

<div class="post-metadata">

**Author:** ![tuatha](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/t/b4bc9f/32.png) [@tuatha](https://www.ruby-forum.com/u/tuatha)\
**Post date:** [November 10, 2010, 10:20pm UTC](https://www.ruby-forum.com/t/running-ironruby-script-from-c/198506/19 "2010-11-10T22:20:03Z")

</div>

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

---

<div class="post-metadata">

**Author:** ![tuatha](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/t/b4bc9f/32.png) [@tuatha](https://www.ruby-forum.com/u/tuatha)\
**Post date:** [November 11, 2010, 8:05pm UTC](https://www.ruby-forum.com/t/running-ironruby-script-from-c/198506/20 "2010-11-11T20:05:03Z")

</div>

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

[Next page](https://www.ruby-forum.com/t/running-ironruby-script-from-c/198506.md?page=2)
