1

我正在尝试将回形针配置为将它与 openshift 一起使用,但我做错了,有什么建议吗?

has_attached_file :photo,
                :styles => {
                :thumb=> "100x100#",
                :small  => "400x400>"
            },
             :url  => "/assets/users_folder/:id/:style/:id.:extension",
             :path => ENV['OPENSHIFT_DATA_DIR']+"public/assets/users_folder/:id/:style/:id.:extension"
4

2 回答 2

2

我们结束了这样做:

:url  => "/assets/:id.:extension",<br>
:path => ":rails_root/public/assets/:id.:extension"

在 openshif 的部署文件( /.openshift/action_hooks/deploy )上:

STORED_ASSETS="${OPENSHIFT_DATA_DIR}/assets"
LIVE_ASSETS="${OPENSHIFT_REPO_DIR}/public/assets"

\# Ensure our stored assets directory exists
if [ ! -d "${STORED_ASSETS}" ]; then
  echo "  Creating permanent assets directory"
  mkdir "${STORED_ASSETS}"
fi

\# Create symlink to stored assets unless we're uploading our own assets
if [ -d "${LIVE_ASSETS}" ]; then
  echo "  WARNING: Assets included in git repository, not using stored assets"
else
  echo "  Restoring stored assets"
  ln -sf "${STORED_ASSETS}" "${LIVE_ASSETS}"
fi

这样我们就创建了一个指向我们的数据文件夹(OPENSHIFT_DATA_DIR)的链接,该链接永远不会被 git 推送删除。

于 2013-05-22T17:34:25.770 回答
0

根据 alfredo 在您的模型中的回答,以便为不同的模型保存不同的样式 - 类似于 Paperclip 的默认设置:

has_attached_file :image,
                :url => "/uploads/:class/:attachment/:id/:style_:filename",
                :path => ":rails_root/public/uploads/:class/:attachment/:id/:style_:filename"

快速解释:

  • :rails_root 将是你的 Rails 根
  • :class 将是您的图像模型的名称(复数形式)
  • :attachment 将是字段的名称(复数形式)
  • :id 将是模型的当前 id
  • :style_ 将是您为图像定义的样式(例如拇指、原始等)
  • :filename 将是文件夹中的最终文件名(rails_root 是您的 rails 根目录,class 通常是您的模型的名称,附件是字段的名称,id 是模型的 id,style 是您定义的样式 - thumb 等 - 文件名是图像的文件名)

注意 /assets/ 到 /uploads/ 文件夹的变化。根据您的 git 配置,资产文件夹可能会被删除。

最后,在 /.openshift/action_hooks/deploy 文件的末尾:

STORED_ASSETS="${OPENSHIFT_DATA_DIR}/uploads"    LIVE_ASSETS="${OPENSHIFT_REPO_DIR}/public/uploads"

# Ensure our stored assets directory exists
if [ ! -d "${STORED_ASSETS}" ]; then
echo " Creating permanent assets directory"
mkdir "${STORED_ASSETS}"
fi

# Create symlink to stored assets unless we're uploading our own assets
if [ -d "${LIVE_ASSETS}" ]; then
echo " WARNING: Assets included in git repository, not using stored     assets"
else
echo " Restoring stored assets"
ln -sf "${STORED_ASSETS}" "${LIVE_ASSETS}"
fi
于 2015-03-28T12:09:30.093 回答