I had a lot of trouble with some rubygem warnings after upgrading to Ruby 1.9.1 and Rails 3.0 on Mac OS x Snow Leopard. They always occurred when I started the server within the project with the command
rails server |
At first, when running on bundler 0.9.3, I had two types of errors. The first NoMethodError populated the terminal with hundreds lines of code, like …
WARNING: # NoMethodError: undefined method ` ' for nil:NilClass # -*- encoding: utf-8 -*- ... WARNING: Invalid .gemspec format in \ '.rvm/gems/ruby-1.9.1-p378/specifications/spec.gemspec' |
The bundler-team around Carlhuda fixed that issue within bundler 0.9.4. So that problem will not occur any more.
The other problem was quite persistent. When starting the server via
rails server |
or doing a test via
rake |
within the rails-3-project resulted in a bunch of warnings:
/usr/local/lib/ruby/site_ruby/1.9.1/rubygems.rb:14: \ warning: already initialized constant VERSION /usr/local/lib/ruby/site_ruby/1.9.1/rubygems.rb:14: \ warning: already initialized constant RubyGemsVersion /usr/local/lib/ruby/site_ruby/1.9.1/rubygems.rb:194: \ warning: already initialized constant MUTEX /usr/local/lib/ruby/site_ruby/1.9.1/rubygems.rb:196: \ warning: already initialized constant RubyGemsPackageVersion /usr/local/lib/ruby/site_ruby/1.9.1/rubygems.rb:202: \ warning: already initialized constant WIN_PATTERNS /usr/local/lib/ruby/site_ruby/1.9.1/rubygems.rb:1079:\ warning: already initialized constant MARSHAL_SPEC_DIR /usr/local/lib/ruby/site_ruby/1.9.1/rubygems.rb:1084: \ warning: already initialized constant YAML_SPEC_DIR /usr/local/lib/ruby/site_ruby/1.9.1/rubygems/version.rb:72: \ warning: already initialized constant VERSION_PATTERN /usr/local/lib/ruby/site_ruby/1.9.1/rubygems/requirement.rb:20: \ warning: already initialized constant OPS /usr/local/lib/ruby/site_ruby/1.9.1/rubygems/requirement.rb:30: \ warning: already initialized constant OP_RE /usr/local/lib/ruby/site_ruby/1.9.1/rubygems/version.rb:246: \ warning: already initialized constant Requirement /usr/local/lib/ruby/site_ruby/1.9.1/rubygems/dependency.rb:18: \ warning: already initialized constant TYPES /usr/local/lib/ruby/site_ruby/1.9.1/rubygems/platform.rb:171: \ warning: already initialized constant RUBY /usr/local/lib/ruby/site_ruby/1.9.1/rubygems/platform.rb:177: \ warning: already initialized constant CURRENT /usr/local/lib/ruby/site_ruby/1.9.1/rubygems/specification.rb:39: \ warning: already initialized constant NONEXISTENT_SPECIFICATION_VERSION /usr/local/lib/ruby/site_ruby/1.9.1/rubygems/specification.rb:50: \ warning: already initialized constant CURRENT_SPECIFICATION_VERSION /usr/local/lib/ruby/site_ruby/1.9.1/rubygems/specification.rb:56: \ warning: already initialized constant SPECIFICATION_VERSION_HISTORY /usr/local/lib/ruby/site_ruby/1.9.1/rubygems/specification.rb:72: \ warning: already initialized constant MARSHAL_FIELDS /usr/local/lib/ruby/site_ruby/1.9.1/rubygems/specification.rb:75: \ warning: already initialized constant TODAY /usr/local/lib/ruby/site_ruby/1.9.1/rubygems/source_index.rb:593: \ warning: already initialized constant Cache /usr/local/lib/ruby/site_ruby/1.9.1/rubygems/config_file.rb:14: \ warning: already initialized constant DEFAULT_BACKTRACE /usr/local/lib/ruby/site_ruby/1.9.1/rubygems/config_file.rb:15: \ warning: already initialized constant DEFAULT_BENCHMARK /usr/local/lib/ruby/site_ruby/1.9.1/rubygems/config_file.rb:16: \ warning: already initialized constant DEFAULT_BULK_THRESHOLD /usr/local/lib/ruby/site_ruby/1.9.1/rubygems/config_file.rb:17: \ warning: already initialized constant DEFAULT_VERBOSITY /usr/local/lib/ruby/site_ruby/1.9.1/rubygems/config_file.rb:18: \ warning: already initialized constant DEFAULT_UPDATE_SOURCES /usr/local/lib/ruby/site_ruby/1.9.1/rubygems/config_file.rb:24: \ warning: already initialized constant OPERATING_SYSTEM_DEFAULTS /usr/local/lib/ruby/site_ruby/1.9.1/rubygems/config_file.rb:30: \ warning: already initialized constant PLATFORM_DEFAULTS /usr/local/lib/ruby/site_ruby/1.9.1/rubygems/config_file.rb:53: \ warning: already initialized constant SYSTEM_WIDE_CONFIG_FILE |
Jeremy Kemper from the Rails core team pointed out that this is not a Rails problem, but a RubyGems issue. Ruby 1.9 ships with an outdated RubyGems … like 1.9.1p378 ships with RubyGems 1.3.1. I did update RubyGems to Version 1.3.5 by
sudo gem update --system |
but this resulted in some duplicated rubygem files, which cause the error.
So how can the problem be solved? Deleting and reinstalling Ruby 1.9.1 does not have any effect … but the solution is quite simple:
1. Be sure that you do NOT install RubyGems 1.3.5 separately after the installation of Ruby 1.9.1 – this would result in a double installation. So have that in mind when following the excellent instructions to installing Ruby, RubyGems, and Rails on Snow Leopard of Dan Benjamin.
2. If you already installed Ruby 1.9.1, updated to RubyGems 1.3.5 and bundler 0.9.4 and also installed Rails 3.0, the only thing you have to do is:
sudo gem uninstall rubygems-update |
That’s it. No errors any more!
1. You may start with Dan Benjamin’s recipe and modify it so you download, make and install the ruby-1.9.1-p378.tar.gz but NOT the rubygems-1.3.5.tgz.
2. Then update RubyGems with the command
sudo gem update --system |
3. Ensure that the rake and the sqlite3-ruby gems are installed, too.
4. Now install the needed gems and rails –pre as described in the Rails 3.0 beta release notes
5. After the successful installation of Rails 3.0 beta, you now have to do the vitally important step:
sudo gem uninstall rubygems-update |
6. Finally check, if any gem needs an update before diving into Rails 3.0 by
sudo gem update |
Hope this helps … and saves some time. Thx Andy for the hint
Tim Pritlove talked about the iPhone and the native application development for that mobile phone with Martin Pittenauer and Dominik Wagner. Mac users may be aware of Martin and Dominik as the Coding Monkeys with their first Mac OS X masterpiece: SubEthaEdit, a collaborative text editor for the Mac. In 2008 the Monkeys also developed some iPhone applications, like Circulator or Big Clock. Tim, Martin and Dominik all together realized Blinkenlights Stereoscope a simulation of the Blinkenlights Installation Toronto 2008. That’s why they all can tell a lot of stories of the similarities and differences of programming for Mac OS X and the iPhone OS. Overall a great mixture for those interested in iPhone developement as well as experts.
The only downside for all international blog readers: The podcast is in German only. Here’s the link to the podcast!
In the last days, there is a lot of whispering: Here a Chinese iPod skin manufacturer publishes a small iPhone skin on his website, an analyst wishes for an iPhone for the mass marked … and bang, everybody is expecting an iPhone nano to be announced. Then the news is spreaded, that Steve Wozniak – second founder of Apple – will join the presentation of the newest modbook at the Axiotron booth at MacWorldExpo … it’s a MacBook transformed into a tablet Mac. That increases the desire and spins the rumor mill even faster for an iPod tablet or MacBook touch. However, the market positioning of such a multitouch-gadget will be tricky:
What ever Phil Schiller will present on his Keynote at the Moscow-Center at MacWorldExpo in San Francisco on January 6th … and what is hidden behind the concealed exhibition banners … I’m thrilled and I’m really looking forward to it
Sometimes you are embarrassed to conntect Mac OS X Leopard with a Windows XP printserver. It should work the Mac plug-and-play way … but it isn’t. So here is the howto, so you don’t need to trouble your head about it.
Context:
In the first corner: A Mac OS X Leopard (10.5.3) machine
In the second corner: A Kyocera 2000D laser printer connected to a Windows XP printserver which is protected by password and username.
Problem:
Adding the printer via the standard Apple-way as a windows printer works – but printing does not work because it is not possible to authenticate against the printserver.
Solution:
You need to add the shared printer via the hidden “Advanced” printer feature in the Print & Fax preferences.
… it’s nearly plug-and-play
The huge system update to Mac OS X 10.5.3 with 200 to over 400 MB resolves a lot of bugs and adds up some additional features to Leopard. Example: More digital cameras with their specific RAW-formats are supported now. Or the possibility to sync the Apple Address Book application with Google Contacts.
Great to see that WIFI stability was increased by the Apple developers.
An annoying – but resolvable – problem appeared after updating when I tried to use the time logging software TimeLog 4: All log entries within TimeLog are saved in iCal – and after upgrading to 10.5.3 my work time entries just doubled. It’s easy to fix the problem by deleting every dublicate log entry – but you better checkt the timesheet in detail before you hand it out to your customer