如何更新rails?由于旧版本而导致错误太多

时间:2015-07-09 12:00:05

标签: ruby-on-rails ruby ruby-on-rails-3

我是rails的新手,我正在开发我的第一个rails应用程序(http://guides.rubyonrails.org/getting_started.html) 当我尝试编辑最新帖子时, 我收到一个错误,因为Patch方法在rails 3.2.16中不可用。 然后我尝试使用PUT方法,但是我收到了一个错误:

  

(错误的参数数量(1为2)

我正在尝试使用以下内容更新宝石:

  

宝石更新

但它在很多软件包上都出现了这样的错误:

Updating rails
Building native extensions.  This could take a while...
ERROR:  Error installing rails:
    ERROR: Failed to build gem native extension.

        /usr/bin/ruby1.9.1 extconf.rb
checking if the C compiler accepts ... yes
Building nokogiri using packaged libraries.
checking for gzdopen() in -lz... no
zlib is missing; necessary for building libxml2
*** extconf.rb failed ***
Could not create Makefile due to some reason, probably lack of
necessary libraries and/or headers.  Check the mkmf.log file for more
details.  You may need configuration options.

Provided configuration options:
    --with-opt-dir
    --without-opt-dir
    --with-opt-include
    --without-opt-include=${opt-dir}/include
    --with-opt-lib
    --without-opt-lib=${opt-dir}/lib
    --with-make-prog
    --without-make-prog
    --srcdir=.
    --curdir
    --ruby=/usr/bin/ruby1.9.1
    --help
    --clean
    --use-system-libraries
    --enable-static
    --disable-static
    --with-zlib-dir
    --without-zlib-dir
    --with-zlib-include
    --without-zlib-include=${zlib-dir}/include
    --with-zlib-lib
    --without-zlib-lib=${zlib-dir}/lib
    --enable-cross-build
    --disable-cross-build


Gem files will remain installed in /var/lib/gems/1.9.1/gems/nokogiri-1.6.6.2 for inspection.
Results logged to /var/lib/gems/1.9.1/gems/nokogiri-1.6.6.2/ext/nokogiri/gem_make.out

我目前的宝石清单:

actionmailer (3.2.16)
actionpack (3.2.16)
activemodel (4.2.3, 3.2.16)
activerecord (4.2.3, 3.2.16)
activeresource (4.0.0, 3.2.16)
activesupport (4.2.3, 4.2.0, 3.2.16)
arel (6.0.0, 3.0.3)
builder (3.2.2, 3.0.4)
coffee-rails (3.2.2)
coffee-script (2.4.1)
coffee-script-source (1.9.1.1)
diff-lcs (1.2.5)
erubis (2.7.0)
execjs (2.5.2)
hike (2.1.3, 1.2.3)
i18n (0.7.0)
journey (1.0.4)
jquery-rails (3.1.3)
json (1.8.3)
libv8 (3.16.14.11 x86_64-linux)
mail (2.6.3, 2.5.4)
mime-types (2.6.1, 1.25.1)
mini_portile (0.6.2)
minitest (5.7.0)
multi_json (1.11.2)
polyglot (0.3.5)
rack (1.6.4, 1.4.7)
rack-cache (1.2)
rack-ssl (1.4.1, 1.3.4)
rack-test (0.6.3)
rails (3.2.16)
rails-observers (0.1.2)
railties (3.2.16)
rake (10.4.2)
rdoc (4.2.0, 3.12.2)
ref (1.0.5)
rspec (3.3.0, 3.2.0)
rspec-core (3.3.1, 3.2.3)
rspec-expectations (3.3.0, 3.2.1)
rspec-mocks (3.3.1, 3.2.1)
rspec-support (3.3.0, 3.2.2)
sass (3.4.15)
sass-rails (3.2.6)
sprockets (3.2.0, 2.2.3)
sqlite3 (1.3.10)
strong_parameters (0.2.3)
therubyracer (0.12.2)
thor (0.19.1)
thread_safe (0.3.5)
tilt (2.0.1, 1.4.1)
treetop (1.6.3, 1.4.15)
tzinfo (1.2.2, 0.3.44)
uglifier (2.7.1) 

有人能告诉我一种方法将rails(或每个gem)更新到最新版本吗?

电流:

  • rails version:3.2.16
  • ruby​​版本:1.9.3
  • gem version:1.8.23

2 个答案:

答案 0 :(得分:0)

不,如果不删除版本约束,就无法自动更新每个gem。

如果你有:

gem 'sass-rails', '~> 3.2' 

然后删除版本约束:

gem 'sass-rails'

允许您使用bundle update来获取最新版本。但是这很难做到,因为明确的版本要求可以保证您的应用在更新无关宝石时或不同开发人员之间不会意外中断。

Rails 3.2和4之间存在一些相当大的差异,作为初学者而不是尝试经历升级的陷阱,您可能更容易安装最新版本的Rails并创建新的rails应用程序。

答案 1 :(得分:0)

正如您在发布的输出中提到的那样,缺少一些需要的库。在你的情况下,zlib也是构建libxml2所必需的。

zlib is missing; necessary for building libxml2

所以你必须安装这些缺少的库。为此,我使用Homebrew作为包管理器在OS X上工作,我发现它非常有用。

此链接也可以帮助您更新应用程序:

http://railsapps.github.io/updating-rails.html