2014-04-04 149 views
0

我成功地設置了一個自動部署的服務器,幸運的是最後。Capistrano部署到數據庫

現在有一個很小的問題,當我部署這種情況發生......

當部署發生,數據庫被遷移的是,即使在服務器重啓後,數據庫保持那種「緩存」,並且不會識別遷移所做的任何更改,直到我轉到服務器並重新啓動mysql服務。

有關如何解決此問題的任何想法?

在此先感謝。編號1:

這是一個遷移示例;

class AddRoleToUsers < ActiveRecord::Migration 
    def change 
    add_column :users, :role, :string, default: 'member' 
    end 
end 

回答

1

但你怎麼知道的更改不認可?你能舉一些例子嗎?
在生產環境中,Rails能夠緩存一些數據庫響應,但重新啓動rails server應清除所有這些緩存。所以看起來問題是在MySQL部分的地方(我個人只使用Postgres,所以不太瞭解MySQL)。也許解決方案是添加一些MySQL重新啓動命令Capistrano的任務?
在Capistrano的3.1它會是這樣的(asuming你是乳寧Linux服務器):

task :restart do 
    on roles(:app), in: :sequence, wait: 5 do 
     execute :touch, release_path.join('tmp/restart.txt') 
     execute "sudo /etc/init.d/mysql restart" 
    end 
    end 
+0

這個唯一不好的是,它必須運行sudo命令和虐待必須配置該用戶不在運行sudo時會提示輸入密碼,這是因爲imo有點不安全,但是也要感謝這個示例遷移將在主帖子中(這是一些錯誤的編輯) – maltray