部署环境:UbuntuServer12.04Postgresql9.1Rails3.2.14Capistrano2.13.5其中:pg_hba.conf文件中描述如下:localallpostrgesqltruselocalallallmd5localall127.0.0.1/32md5localall::1/128md5config/deploy.rb中有一行:run"cd#{latest_release}&{rake}RAILS_ENV=#{rails_env}#{asset_env}assets:precompile"在远程执行capstaging:deploy时,运行到上面那行代码就会报错,提示无法连接数据库,在ActiveRecord初始化时出现错误。当时我注释掉那一行,ssh到服务器上,直接cd到项目中执行预编译,也能成功,不会出现错误。后来我在config/application.rb中加上了:config.assets.initialize_on_precompile=false#Heroku中部署Rails3.2程序也有这个要求最终问题解决。我的问题是:Rails3.2程序在production环境中执行预编译的时候,真的有初始化ActiveRecord这一步么,以及为什么?
2 回答
慕莱坞森
TA贡献1810条经验 获得超4个赞
config.assets.initialize_on_precompile=false#默认为True此配置项的作用正是在执行asset:precompile不初始化App。初始化ActiveRecord属于初始化整个APP的一部分。RailsGuides中有说:Ifyousetconfig.assets.initialize_on_precompiletofalse,besuretotestrakeassets:precompilelocallybeforedeploying.Itmayexposebugswhereyourassetsreferenceapplicationobjectsormethods,sincethosearestillinscopeindevelopmentmoderegardlessofthevalueofthisflag.Changingthisflagalsoaffectsengines.Enginescandefineassetsforprecompilationaswell.Sincethecompleteenvironmentisnotloaded,engines(orothergems)willnotbeloaded,whichcancausemissingassets.意即如果设置成false,可能导致在编译部分文件时出现Bug(例如:内嵌的erb语句<%=something...%>)。建议在部署前测试。
添加回答
举报
0/150
提交
取消