Rails缓存权限错误

时间:2015-02-21 01:17:44

标签: ruby-on-rails spree digital-ocean cloud66

我有一个在数字海洋上运行并通过Cloud 66部署的Rails应用程序(Spree Commerce商店)。

我想通过SSH连接到我的服务器,运行rails控制台,并调整一些Spree配置设置。当我尝试这样做时,我收到权限错误:

  

Errno :: EACCES:权限被拒绝@ dir_s_mkdir -   的/ var /部署/我的应用内/ web_head /释放/ 20150220220517 / TMP /高速缓存/ 29B

根据Spree Developer Guide's page on preferences,这是因为首选项被缓存到内存中以提高性能。问题(我认为)是我的用户没有对tmp/cache目录的写访问权,而我的用户正在运行rails控制台。

如果我在$ STACK_PATH / tmp / cache目录中ls -l,我会得到以下内容:

> lrwxrwxrwx 1 nginx nginx 43 Feb 20 22:05
> tmp/cache ->
> /var/deploy/my-app/web_head/shared/cache

我认为我需要为我的用户提供对目录的写访问权限,就像nginx用户一样。我尝试将自己添加到nginx用户组,但这似乎没有任何效果。如何防止此权限错误?

1 个答案:

答案 0 :(得分:2)

好的,我在Cloud 66的支持论坛上根据this question and answer找出了它。

我将缓存文件夹的组所有者更改为app_writers,这是我的用户所属的组。 Cloud 66的方法是使用部署挂钩。这是适用于我的yml文件:

production:
    after_rails:
        command: chown nginx:app_writers /var/deploy/my-app/web_head/current/tmp/cache && chmod -R 775 /var/deploy/my-app/web_head/current/tmp/cache
        target: rails
        run_on: all_servers
        sudo: true