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;
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.
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?
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
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:
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.
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?
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).
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.
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?
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.