<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    posts - 262,  comments - 221,  trackbacks - 0

    今天使用Rails3.0.7 + rake 0.9.2部署Rails應(yīng)用到heroku時(shí),發(fā)現(xiàn)在heroku上面無法執(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>'

    看來是rake的問題了,于是查了一下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ā)覺又是一個(gè)Rails和其他gem不兼容的問題,只要把rake的版本設(shè)置為0.8.7就可以了。

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

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

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

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

    完成之后,再次執(zhí)行heroku rake db:migrate,問題解決
    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 閱讀(1422) 評(píng)論(1)  編輯  收藏


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

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


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

    常用鏈接

    留言簿(21)

    隨筆分類

    隨筆檔案

    BlogJava熱點(diǎn)博客

    好友博客

    搜索

    •  

    最新評(píng)論

    閱讀排行榜

    評(píng)論排行榜

    主站蜘蛛池模板: 国产精品xxxx国产喷水亚洲国产精品无码久久一区 | 香蕉高清免费永久在线视频| 亚洲AV色香蕉一区二区| 岛国精品一区免费视频在线观看| 丁香亚洲综合五月天婷婷| 亚洲av日韩综合一区二区三区| 思思99re66在线精品免费观看| 亚洲综合成人婷婷五月网址| 国产精品无码免费播放| 亚洲欧洲无码一区二区三区| 日本不卡在线观看免费v| 立即播放免费毛片一级| 亚洲伊人久久综合影院| 三级网站免费观看| 中文字幕亚洲免费无线观看日本| 亚洲成人免费网站| 亚洲综合小说另类图片动图| 国产又粗又猛又爽又黄的免费视频| 亚洲精品国产摄像头| 亚洲人成无码网WWW| 日韩电影免费在线观看网站| 亚洲一区二区三区高清| 日本精品人妻无码免费大全| 色天使亚洲综合一区二区| 久久精品亚洲福利| 精品日韩亚洲AV无码一区二区三区| 免费不卡在线观看AV| 亚洲一级大黄大色毛片| 免费人妻av无码专区| 免费看少妇高潮成人片| 亚洲免费中文字幕| 午夜影视在线免费观看| 国产高清对白在线观看免费91| 久久丫精品国产亚洲av不卡| 免费毛片网站在线观看| 中文字幕手机在线免费看电影| 亚洲视频在线免费播放| 免费在线观看a级毛片| 84pao国产成视频免费播放| 国产精品无码亚洲精品2021| 久久青草亚洲AV无码麻豆|