posts - 262,  comments - 221,  trackbacks - 0

          今天使用Rails3.0.7 + rake 0.9.2部署Rails應(yīng)用到heroku時(shí),發(fā)現(xiàn)在heroku上面無(wú)法執(zhí)行rake db:migrate命令。報(bào)錯(cuò)信息如下:

          paul@RoR:~/Workspace/rails_projects/demo_app$ heroku rake db:migrate
          (
          in /app)
          rake aborted
          !
          uninitialized constant Rake::DSL
          /usr/ruby1.9.2/lib/ruby/1.9.1/rake.rb:2482:in `const_missing'
          /app/.bundle/gems/ruby/1.9.1/gems/rake-0.9.2/lib/rake/tasklib.rb:8:in `<class:TaskLib>'

          看來(lái)是rake的問(wèn)題了,于是查了一下rake的版本

          paul@RoR:~/Workspace/rails_projects/demo_app$ bundle 
          Using rake (
          0.9.2
          Using 
          abstract (1.0.0
          Using activesupport (
          3.0.7
          Using builder (
          2.1.2
          Using i18n (
          0.5.0
          Using activemodel (
          3.0.7)

          網(wǎng)上google了一下,發(fā)覺(jué)又是一個(gè)Rails和其他gem不兼容的問(wèn)題,只要把rake的版本設(shè)置為0.8.7就可以了。

          Rails3.0的Gem配置在文件Gemfile中設(shè)置,但是默認(rèn)的不會(huì)有rake的版本指定,我們需要手工指定。修改Gemfile,增加對(duì)rake的版本指定

          gem 'rails''3.0.7'
          gem 
          'rake''0.8.7'

          這樣在沒(méi)有rake0.8.7這個(gè)版本時(shí),bundle會(huì)自動(dòng)去RubyForge.org下載,如果本地已經(jīng)安裝了則使用本地的gem

          滿以為這樣就可以了,可是一執(zhí)行bundle install還是報(bào)錯(cuò)

          paul@RoR:~/Workspace/rails_projects/demo_app$ bundle install
          Fetching source index 
          for http://rubygems.org/
          You have requested:
            rake 
          = 0.8.7

          The bundle currently has rake locked at 
          0.9.2.
          Try running `bundle update rake`
          paul@RoR:
          ~/Workspace/rails_projects/demo_app$ bundle unlock
          Unlock 
          is deprecated. To update to newer gem versions, use `bundle update`.
          paul@RoR:
          ~/Workspace/rails_projects/demo_app$ bundle update rake

          這是為什么呢?怎么會(huì)說(shuō)bundle被鎖定呢?原來(lái)啊Rails為了保證應(yīng)用在不同的環(huán)境下配置一樣,會(huì)對(duì)Gemfile生成一個(gè)lock文件,該lock文件把當(dāng)前應(yīng)用的gem配置都記錄下來(lái),并一同發(fā)布出去(這里指的是GitHub),一旦其他人下載該應(yīng)用后執(zhí)行bundle install時(shí)會(huì)強(qiáng)制按照該lock文件中指定的gem版本去下載或調(diào)用,而不是使用其他人本地已經(jīng)安裝的gem,這樣就可以保證在不同的環(huán)境下應(yīng)用的特性一致。

          在完成對(duì)bundle的解鎖后,依次執(zhí)行下列命令
          git commit -a
          git push origin master
          git push heroku master

          完成之后,再次執(zhí)行heroku rake db:migrate,問(wèn)題解決
          paul@RoR:~/Workspace/rails_projects/demo_app$ heroku rake db:migrate
          (
          in /app)
          Migrating to CreateUsers (
          20110628080358)
          ==  CreateUsers: migrating ====================================================
          -- create_table(:users)
             
          -> 0.0095s
          ==  CreateUsers: migrated (0.0096s) ===========================================

          Migrating to CreateMicroposts (
          20110629094445)
          ==  CreateMicroposts: migrating ===============================================
          -- create_table(:microposts)
             
          -> 0.0059s
          ==  CreateMicroposts: migrated (0.0060s) ======================================



          -------------------------------------------------------------
          生活就像打牌,不是要抓一手好牌,而是要盡力打好一手爛牌。
          posted on 2011-07-03 21:28 Paul Lin 閱讀(1430) 評(píng)論(1)  編輯  收藏


          FeedBack:
          # re: heroku rake db:migrate 錯(cuò)誤解決一則[未登錄](méi)
          2011-08-14 00:55 | rex
          問(wèn)題解決 謝謝  回復(fù)  更多評(píng)論
            

          只有注冊(cè)用戶登錄后才能發(fā)表評(píng)論。


          網(wǎng)站導(dǎo)航:
           
          <2011年7月>
          262728293012
          3456789
          10111213141516
          17181920212223
          24252627282930
          31123456

          常用鏈接

          留言簿(21)

          隨筆分類

          隨筆檔案

          BlogJava熱點(diǎn)博客

          好友博客

          搜索

          •  

          最新評(píng)論

          閱讀排行榜

          評(píng)論排行榜

          主站蜘蛛池模板: 政和县| 塘沽区| 奉化市| 易门县| 金坛市| 芦山县| 皋兰县| 铁岭市| 蓝山县| 兴山县| 霞浦县| 怀化市| 菏泽市| 嵊州市| 南丰县| 鄂伦春自治旗| 白朗县| 丽江市| 通江县| 福建省| 陆良县| 鱼台县| 闵行区| 搜索| 孝昌县| 道真| 即墨市| 元谋县| 浮梁县| 甘德县| 密山市| 松潘县| 竹北市| 信宜市| 甘孜县| 晋宁县| 涿鹿县| 涟水县| 铁力市| 临猗县| 隆化县|