Installing Redmine and Ruby language. Fresh and poor experience

About 3 years ago I installed redmine (project management web application, written using the Ruby on Rails framework) and all Ruby-specific components that needed for it on Windows OS. I remember that I had a lot of issues with it. But I already forgot details from that time.

But now I need to install redmine again. I was expected that situation is changed and improved; 3 years is quite long period of time for software project. But it is appeared that I had again a lot of issues.

Among them: missing Ruby certificate, issues with handling spaces in the paths under Windows, selecting between gems mysql and mysql2 and finding version and platform of mysql2 which works with Windows, gem nokogiri can be built only as native component. I find video which helped me to obtain working rails and avoid pitfalls: How to install Ruby on Rails on Windows 7 – Part 4, Ruby on Rails.

Then I had issues when installing rmagick gem. it appears that this component has a lot of issues already for a long time, despite it provides image manipulation functionality which can be considered as a “must have” in mature development environment. Probably there is easily to install alternative with only very basic image manipulation functionality. But redmine uses rmagick.

It appeared that there are some issues with the rmagick project support and further development. Eventually I found version which works along with fixing some issues with installation. The page on GitHub “Installing on Windows” helps me to avoid some small pitfalls, but I didn’t not found it from the beginning because RubyGems.org rmagic page contains link to documentation at http://www.rubydoc.info/gems/rmagick/

I also had issue with running ‘rake db:create’ to create redmine database. This is because default configuration in redmine contains localhost and I should to replace it with 127.0.0.1. Probably this is not pure Ruby issue, but this is first time I required to replace localhost with 127.0.0.1. It was not easy to figure out for me what is wrong with the following error message which has not anything hepful to fix issue:
Couldn't create database for {"adapter"=>"mysql2", "encoding"=>"utf8", "database"=>"sandbox_development",
"pool"=> 5, "username"=>"root", "password"=>"****", "host"=>"localhost"},
{:charset=>"utf8", :collation=>"utf8_unicode_ci"}
(If you set the charset manually, make sure you have a matching collation)

I am not Ruby developer but it required me a lot of effort to explore language/ versions of differen pieces of software/community/distributions to find all of the solution of issues I experienced with. Hope this may take significantly less time for Ruby developers. But I am not one of them. And I am not completed installation still.

Well, I don’t remember whole list of things I need to fix, there were much more small ones. But it is enough to bring an idea about my feeling with installing redmine.

Probably Ruby is one of the less mature language/community/components I have touched last time. And this is despite I had a lot of positive feedbacks especially about language itself.

After all of described issues I have found that project to develop specification for Ruby language is closed. Quite good explanation of reasons by its main contributor. And there is a response for it: RubySpec is dead, long live RubySpec!. Such response and discussion under it clarified situation. And drilling deeper into discussion convinced me that there is not clear understanding why even specification is required and why it is important for large project and progress of Ruby language in long run. Appealing in that discussion that there a lot of tests instead of specification is funny. E.g. good example of test case which can be said as a part of de facto unit tests specification of Ruby; developers of Ruby may be very unhappy to fix Ruby implementations to pass such kind of tests.

I remember my experience in software development when project existed for a long time without specification and it was not possible to rewrite ugly code. This is because users used behavior which was not intended by developers. As a consequence it was not possible just rewrite functionality in better way because it was not easy to preserve side effects in behavior which were already utilized by users. It was also not always possible to fix bugs painless because users of libraries implemented workarounds and we should preserve bug compatibility not to break functionality based on them. Most of that could be fixed with specification. I don’t speak about some kind of very formal and strict document, but specification and clarifying in human readable language and formal language when needed helps to avoid a lot of such issues in new projects.

Well, these discussion also demonstrate needs of specification and difficulties to develop it at the same time.

I hardly believe that developers of Ruby do not understand needs of specification. But such conclusion came up to me after reading discussion about it. I don’t have confident opinion here.

Another drawback of Ruby is poor performance in comparison with competitor technologies, Node specifically. I am not going to drill into details. In this context I would just mentioned that specification of language simplify development of alternative implementation, which can be more performance oriented. Anyway performance improvement is separate large task. I don’t know a lot about reasons which makes Ruby slow.

As a result I have following feeling. New versions of Ruby and technologies based on it are constantly released. But basic needs for users of technology which just need to install and use are not satisfied. When I drilled deeper under the hood of Ruby community I observed a lot of conflicts both in development of Ruby Itself and frequently used components. Well, discussions are usual things especially in such large projects as Ruby. But in this case I have feeling that there is no common view in fundamental points of Ruby language and supplementary technologies.

When I tried to find new version of Mongrel server which is not supported any more, it appeared that author of it decided to leave Ruby community and wrote interesting post Rails Is A Ghetto. Despite the post is very contradictory and quite rough language is used a lot of things become more clear for me. And despite the post is 6 years old I have feeling that overall situation in community is not changed significantly. Of course this is on my very limited experience.

After all of such experience it looks more clear for me why I hear quite a lot of good things about Ruby language, but actually I don’t observe increasing number of developers which use it: beautiful and elegant language, but a lot of pain if somebody actually decides to use it.

Now I also better understand why somebody created site The Ruby Drama.

Hope Ruby community will understand basic needs of users and situation will be improved over time. Otherwise I don’t think that Ruby has bright future. And as opposite if entry threshold is reduced for new users and developers new many fans can be attracted.

Share

Leave a Reply

Your email address will not be published. Required fields are marked *