0

さて、CentOSサーバーでRuby on Railsを実行していますが、正常に動作しています。現在、同じアプリを、画像の特定のフォルダーを除いて機能しているUbuntuサーバーに移行しようとしています。これは、何が起こっているのか理解できないようです。

Capistranoを介して展開しているので、現在のフォルダーに展開しています。これが私のapache.confファイル設定です:

<Virtualhost *:80>
    ServerName myserver
   DocumentRoot  /var/www/folder/current/public
   <Directory /var/www/folder/current/public>
      Allow from all
      Options -Multiviews
   </Directory>
</VirtualHost>

ファイルは私のアプリに存在します(アセット/ベンダーの下)。ビルド中、プリコンパイル中、または展開中にエラーは発生しません。新しいサーバーでファイルを提供しようとすると、次のメッセージが表示されます。

Started GET "/system/vendors/logos/000/000/002/original/filename.png?1354897276" for 68.188.46.74 at 2013-01-25 00:51:37 +0000

ActionController::RoutingError (No route matches [GET] "/system/vendors/logos/000/000/002/original/filename.png"):
  actionpack (3.2.11) lib/action_dispatch/middleware/debug_exceptions.rb:21:in `call'
  actionpack (3.2.11) lib/action_dispatch/middleware/show_exceptions.rb:56:in `call'

私は、それが違いを生むかどうかを確認するために、一時ファイル(通常は決して行いません)777を含むアクセス許可の変更を試みました。

システムアセットパイプラインフォルダが共有ディレクトリにあるように見えますが、ログディレクトリのようにシンボリックリンクが表示されません。そこで、シンボリックリンクを作成してみましたが、何も起こりませんでした。

私は途方に暮れています。助言がありますか?

1/25を編集

これを投稿したとき、クリップでアップロードされた画像であることに気づかなかったため、これらの画像がシステムパスに含まれています。したがって、モデルで次のように定義されているロゴ属性からのビューを介してそれらを呼び出しています。

  has_attached_file :logo

そして私の見解では、私はこれを介してそれを呼んでいます:

          <%= image_tag(vendor.logo.url, :class => 'rounded'); %>

繰り返しになりますが、これは他の2つのサーバーで機能するため、移行がクリアされて影響が出ており、アクセス許可に関連している可能性がありますか?

ImageMagickがサーバーにインストールされます。

4

2 に答える 2

2

Railsは環境で実行されている間app/assetslib/assetsまたはvendor/assetsディレクトリからのファイルを提供しないため、これらのファイルは提供されていません。production

このファイルは、実際にはディレクトリ内publicのリクエストで指定されているパスに配置する必要があります。そこに配置することで、ファイルがRailsではなくPassenger(Apache / Nginx)を実行しているWebサーバーによって提供されるという追加の利点があります。これは、リクエストがRailsによって処理される場合よりも大幅に高速になることを意味します。

最高速度を得るには、提供するすべての静的ファイルがpublicディレクトリとそのサブディレクトリにあることを確認してください。

于 2013-01-25T01:53:23.147 に答える
0

したがって、ライアンの答えは正しい方向に進んでいましたが、これは他の誰かを助けるかもしれないので、私はすべての詳細を記入すると思いました。

RailsのアップロードにPaperclipを使用していますが、この問題の全体的な原因はわかりませんが、Railsの更新である可能性がありますが、とにかく、次の設定を変更して、これらを適切なフォルダーに移動しました。

has_attached_file :logo, 
:path => ':rails_root/public/uploads/:attachment/:basename..:extension', 
:url => '/uploads/:basename.:extension'

あなたが従うことができるより多くのオプションがあります、しかしそれは私の必要性のために働きました。

これで、ファイルは/ public/uploadsディレクトリに保存されます。これは機能しています。すでにアップロードしたファイルはすべて手動で移動する必要があります。ローカルでは、デプロイ時に自動的に移動します。

于 2013-01-25T21:32:28.513 に答える