简体   繁体   中英

How to run Ruby on Rails 3 with ruby 2.0

Is there an easy fix, how I could continue an old rails 3-0.20 installation under ruby 2.0?

The first error, caused by this line:

<%= stylesheet_link_tag :all %>

is

ActionView::Template::Error (no implicit conversion of nil into String):

An upgrade of the rails version would be the best, but unfortunately it is not possible in my case.

在application.rb结尾修复以下行的问题

ActionController::Base.config.relative_url_root = ''

I ran into the same issue. After drilling down into the stylesheet_link_tag method, I found that the issue comes from here

# actionpack-3.0.20/lib/action_view/helpers/asset_tag_helper.rb:749
if has_request && include_host && !source.start_with?(controller.config.relative_url_root)

The problem is String#starts_with? . In 1.9.3, that method will handle a nil as an input. 2.0.0 does not allow that.

ruby-1.9.3> 'whatever'.start_with? nil
=> false

ruby-2.0.0> 'whatever'.start_with? nil
TypeError: no implicit conversion of nil into String

It's probably also true that later versions of Rails set the value to '' if it's not set to prevent this issue. The hotfix mentioned above does fix the issue, but the root cause is differences between 1.9.3 and 2.0.0.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM