【问题标题】:Deploy hook syntax error部署钩子语法错误
【发布时间】:2013-06-08 18:49:33
【问题描述】:

在 cloud66 部署到 digitalocean 期间,尝试使用部署挂钩授予 /public/uploads 权限,以使carrierwave 文件上传正常工作。 我收到以下错误:

Error during deployment: Error during after_rails hook: Execution of sudo 
/tmp/open_folder_permissions.sh returned a non-zero exit code. Output was: 
/tmp/open_folder_permissions.sh:5: syntax error, unexpected tGVAR, expecting keyword_do or 
'{' or '(' sudo chmod 0775 -R $RAILS_STACK_PATH/public/uploads ^ 

open_folder_permissions.sh

#! /usr/bin/env ruby
#load environment variables
source /var/.cloud66_env
#assign desired permissions
sudo chmod 0775 -R $RAILS_STACK_PATH/public/uploads

deploy_hooks.yml

production:
  after_rails:
    - source: /.cloud66/files/open_folder_permissions.sh
      destination: /tmp/open_folder_permissions.sh
      target: rails                
      execute: true
      run_on: all_servers
      apply_during: all
      sudo: true

什么可能导致错误?

【问题讨论】:

    标签: ruby-on-rails ruby shell deployment


    【解决方案1】:

    您的 open_folder_permissions.sh 不包含有效的 Ruby 代码。从外观上看,它应该是一个 shell 脚本,而不是 Ruby 脚本,所以你应该将 shebang 行更改为 shell 解释器而不是 Ruby 解释器。

    #! bin/bash 是正确的解释器。

    【讨论】:

    • 我认为是#! /bin/sh˛did it,但现在我遇到了另一个错误:Error during deployment: Error during after_rails hook: Execution of sudo /tmp/open_folder_permissions.sh returned a non-zero exit code. Output was: /tmp/open_folder_permissions.sh: 3: /tmp/open_folder_permissions.sh: source: not found chmod: cannot access /public/uploads': No such file or directory 基本上它找不到目录。难道它不在 Rails_path/public/uploads 中搜索,只是在 /public/uploads 中搜索?
    • #! /bin/bash 是解决方案
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-08-05
    • 2020-07-12
    • 2022-09-25
    • 1970-01-01
    • 1970-01-01
    • 2012-05-16
    • 2023-04-05
    相关资源
    最近更新 更多