Posted on 12/22/2010 at 10:25AM

Ultraviolet is a syntax highlighting engine that generates website/blog embeddable html and CSS. It utilizes the syntax files of the popular programmer editor TextMate for more than 50 languages and 20 themes.

I ran into the problem after adding the following line to my config/environment.rb file:

config.gem 'ultraviolet', :lib=>'uv'

And running the standard installation scripts:

rake gems:install
rake db:migrate

The following error was generated:

/usr/bin/rake:19
Missing these required gems:
  ultraviolet  

You're running:
  ruby 1.8.7.174 at /usr/bin/ruby
  rubygems 1.3.7 at /home/rsepulve/.gem/ruby/1.8, /usr/lib/ruby/gems/1.8

I knew that i had already installed the ultraviolet gem so I examined the verbose error listing and noticed the following:

libonig.so.2: cannot open shared object file: 
No such file or directory - /usr/lib/ruby/gems/1.8/gems/oniguruma-1.1.0/lib/oregexp.so
/usr/lib/ruby/gems/1.8/gems/oniguruma-1.1.0/lib/oregexp.so

I looked for this shared object/library on my machine and found it in /usr/local/lib instead of /usr/lib.

This particular library belongs to the 'oniguruma' regexp package which is one of 'ultraviolet's dependencies. This package must be downloaded and installed prior to installing 'ultraviolet'.

I solved the problem by relocating the library from the /usr/local/lib tree to the /usr/lib tree. This was accomplished by rerunning configure and make install for oniguruma using the --prefix option.

/configure --prefix='/usr'
make install

Bingo! everything installs without an error and here are the results:

<div class="editBlogPost">
		<div class="blogEditLeftPanel">
			<% if @blog_post.errors.size > 0 %>
				<div id="errorExplanation">
					<h2>The blog post could not be saved:</h2>
					<ul>
						<% @blog_post.errors.full_messages.each do |msg| %>
							<li><%= msg %></li>
						<% end %>
					</ul>
				</div>
			<% end %>
			<p>
				<%= f.label :title %><br />
				<%= f.text_field :title %>
			</p>
			<p>
				<%= f.label :body %><br />
				<%= f.text_area :body %>
			</p>

Tags: gems, centos, ruby, ultraviolet, rails, textmate