标签: rails-activestorage

如何使用带有Rails Active Storage的S3检索附件URL

rails version 5.2
Run Code Online (Sandbox Code Playgroud)

我有一个场景,我需要使用亚马逊s3访问Rails Active Storage的公共URL来制作带Sidekiq后台作业的zip文件.

我很难获得实际的文件网址.我试过以下

rails_blob_url
Run Code Online (Sandbox Code Playgroud)

但它让我跟随

http://localhost:3000/rails/active_storage/blobs/eyJfcmFpbHMiOnsibWVzc2FnZSI6IkJBaHBBZUk9IiwiZXhwIjpudWxsLCJwdXIiOiJibG9iX2lkIn19--9598613be650942d1ee4382a44dad679a80d2d3b/sample.pdf
Run Code Online (Sandbox Code Playgroud)

如何通过sidekiq访问真实文件网址?

storage.yml

 test:
  service: Disk
  root: <%= Rails.root.join("tmp/storage") %>

local:
  service: Disk
  root: <%= Rails.root.join("storage") %>

development:
  service: S3
  access_key_id: 'xxxxx'
  secret_access_key: 'xxxxx'
  region: 'xxxxx'
  bucket: 'xxxxx'
Run Code Online (Sandbox Code Playgroud)

development.rb

  config.active_storage.service = :development
Run Code Online (Sandbox Code Playgroud)

我可以在web界面上访问这些,但不能在sidekiq中访问

ruby-on-rails amazon-s3 rails-activestorage

11
推荐指数
3
解决办法
1万
查看次数

发出打开凭据文件的问题

我正在尝试使用此命令打开凭据文件。

rails credentials:edit
Run Code Online (Sandbox Code Playgroud)

它返回:

没有 $EDITOR 来打开文件。像这样分配一个:

EDITOR="mate --wait" bin/rails 凭证:编辑

对于立即 fork 和退出的编辑器,传递一个等待标志很重要,否则凭据将立即保存而没有机会进行编辑。

所以我做了这个命令:

EDITOR="subl --w" bin/rails credentials:edit
Run Code Online (Sandbox Code Playgroud)

但是,终端会在不打开编辑器的情况下以“加密并保存的新凭据”作为响应。

ruby-on-rails amazon-s3 rails-activestorage

11
推荐指数
2
解决办法
6856
查看次数

如何在ActiveStorage中更新附件(Rails 5.2)

我最近将我的项目升级到最新的Rails版本(5.2)以获得ActiveStorage- 一个处理附件上传到AWS S3,Google Cloud等云服务的库.

几乎一切都很好.我可以上传和附加图像

user.avatar.attach(params[:file])
Run Code Online (Sandbox Code Playgroud)

接收它

user.avatar.service_url
Run Code Online (Sandbox Code Playgroud)

但现在我想替换/更新用户的头像.我以为我可以跑

user.avatar.attach(params[:file])
Run Code Online (Sandbox Code Playgroud)

再次.但这会引发错误:

ActiveRecord::RecordNotSaved: Failed to remove the existing associated avatar_attachment. The record failed to save after its foreign key was set to nil.
Run Code Online (Sandbox Code Playgroud)

那是什么意思?如何更改用户头像?

activerecord ruby-on-rails ruby-on-rails-5 rails-activestorage

10
推荐指数
2
解决办法
6435
查看次数

更改ActiveStorage控制器路径

有没有办法自定义附件网址而不是

/rails/active_storage/representations/
/rails/active_storage/blobs/
Run Code Online (Sandbox Code Playgroud)

我们可以这样:

/custom_path/representations/
/custom_path/blobs/
Run Code Online (Sandbox Code Playgroud)

ruby-on-rails rails-activestorage

10
推荐指数
2
解决办法
1476
查看次数

Activestorage固定装置附件

在铁轨测试中.我有一个只有activestorage的基本模型:

class User < ApplicationRecord
  has_one_attached :avatar
end
Run Code Online (Sandbox Code Playgroud)

我正试图让它成为固定装置,但没有运气(我确实有一个图像):

# users.yml
one:
  avatar: <%= File.open Rails.root.join('test', 'files', 'image.png').to_s %>
Run Code Online (Sandbox Code Playgroud)

如何通过灯具正确附加头像文件?

ruby-on-rails rails-activestorage

10
推荐指数
5
解决办法
1641
查看次数

将ActiveStorage日志静音

ActiveStorage充斥我的开发日志,所以我淹没在页面上的图像请求.有没有办法静音活动存储或至少减少日志条目,以便我可以再次使用我的日志?

例如,对于通过ActiveStorage访问的页面上的每个图像,我得到以下其中一个:

2018-09-03 11:07:42.181697 I [75455:70130232359340 log_subscriber.rb:12] (2.365ms) ActiveStorage::DiskController -- Completed #show -- {
        :controller => "ActiveStorage::DiskController",
            :action => "show",
            :params => {
        "content_type" => "image/jpeg",
         "disposition" => "inline; filename=\"faded-flip.jpg\"; filename*=UTF-8''faded-flip.jpg",
         "encoded_key" => "eyJfcmFpbHMiOnsibWVzc2FnZSI6IkJBaEpJbk4yWVhKcFlXNTBjeTh6TnpRMVlqSmtZaTB3WlRCakxUUTVaRFV0WW1Ga01DMWxNRFl4TWpFd09Ua3dOMkl2TkdRME1qQTBNR1EzTjJaaE5UZ3pOVFU1WXpSbVpqaGlOVFpoWVdVd01ESmhabVJqWW1GaE5HTmxPRFV3WXpneU1UUmhPVEpsWlRVNVl6bGlPRGs0WVFZNkJrVlUiLCJleHAiOiIyMDE4LTA5LTAzVDEwOjEyOjMyLjUwN1oiLCJwdXIiOiJibG9iX2tleSJ9fQ==--b9eed7f4cf3d71fcb697429188e1a1a74ba88bec",
            "filename" => "faded-flip"
    },
            :format => "JPEG",
            :method => "GET",
              :path => "/rails/active_storage/disk/eyJfcmFpbHMiOnsibWVzc2FnZSI6IkJBaEpJbk4yWVhKcFlXNTBjeTh6TnpRMVlqSmtZaTB3WlRCakxUUTVaRFV0WW1Ga01DMWxNRFl4TWpFd09Ua3dOMkl2TkdRME1qQTBNR1EzTjJaaE5UZ3pOVFU1WXpSbVpqaGlOVFpoWVdVd01ESmhabVJqWW1GaE5HTmxPRFV3WXpneU1UUmhPVEpsWlRVNVl6bGlPRGs0WVFZNkJrVlUiLCJleHAiOiIyMDE4LTA5LTAzVDEwOjEyOjMyLjUwN1oiLCJwdXIiOiJibG9iX2tleSJ9fQ==--b9eed7f4cf3d71fcb697429188e1a1a74ba88bec/faded-flip.jpg",
            :status => 200,
      :view_runtime => 0.69,
        :db_runtime => 0.0,
    :status_message => "OK"
}
127.0.0.1 - - [03/Sep/2018:11:07:41 BST] "GET /rails/active_storage/disk/eyJfcmFpbHMiOnsibWVzc2FnZSI6IkJBaEpJbk4yWVhKcFlXNTBjeTh6TnpRMVlqSmtZaTB3WlRCakxUUTVaRFV0WW1Ga01DMWxNRFl4TWpFd09Ua3dOMkl2TkdRME1qQTBNR1EzTjJaaE5UZ3pOVFU1WXpSbVpqaGlOVFpoWVdVd01ESmhabVJqWW1GaE5HTmxPRFV3WXpneU1UUmhPVEpsWlRVNVl6bGlPRGs0WVFZNkJrVlUiLCJleHAiOiIyMDE4LTA5LTAzVDEwOjEyOjMyLjUwN1oiLCJwdXIiOiJibG9iX2tleSJ9fQ==--b9eed7f4cf3d71fcb697429188e1a1a74ba88bec/faded-flip.jpg?content_type=image%2Fjpeg&disposition=inline%3B+filename%3D%22faded-flip.jpg%22%3B+filename%2A%3DUTF-8%27%27faded-flip.jpg HTTP/1.1" 200 21345
http://localhost:3000/users/password/new -> /rails/active_storage/disk/eyJfcmFpbHMiOnsibWVzc2FnZSI6IkJBaEpJbk4yWVhKcFlXNTBjeTh6TnpRMVlqSmtZaTB3WlRCakxUUTVaRFV0WW1Ga01DMWxNRFl4TWpFd09Ua3dOMkl2TkdRME1qQTBNR1EzTjJaaE5UZ3pOVFU1WXpSbVpqaGlOVFpoWVdVd01ESmhabVJqWW1GaE5HTmxPRFV3WXpneU1UUmhPVEpsWlRVNVl6bGlPRGs0WVFZNkJrVlUiLCJleHAiOiIyMDE4LTA5LTAzVDEwOjEyOjMyLjUwN1oiLCJwdXIiOiJibG9iX2tleSJ9fQ==--b9eed7f4cf3d71fcb697429188e1a1a74ba88bec/faded-flip.jpg?content_type=image%2Fjpeg&disposition=inline%3B+filename%3D%22faded-flip.jpg%22%3B+filename%2A%3DUTF-8%27%27faded-flip.jpg
2018-09-03 11:07:42.234412 D [75455:70130203086520 log_subscriber.rb:8] ActiveStorage::DiskController -- …
Run Code Online (Sandbox Code Playgroud)

ruby-on-rails rails-activestorage

10
推荐指数
3
解决办法
587
查看次数

ActiveStorage::IntegrityError 何时引发?

我的应用程序(本地)ActiveStorage::IntegrityError在尝试附加文件时引发错误。我怎样才能摆脱这个错误?

我只有一个has_one_attached,我不知道这个错误是如何妨碍的。

# model
has_one_attached :it_file
Tempfile.open do |temp_file|
  # ...
  it_file.attach(io: temp_file, filename: 'filename.csv', content_type: 'text/csv')
end

# storage.yml
local:
  service: Disk
  root: <%= Rails.root.join("storage") %>
Run Code Online (Sandbox Code Playgroud)

编辑:它可能与删除storage/目录有关(它发生在我删除之后),也可能是因为它发生在工作中(完整的错误是Error performing ActivityJob (Job ID: .. ) from Async( .. ) in .. ms: ActiveStorage::IntegrityError (ActiveStorage::IntegrityError)

这不会将文件添加到storage/文件夹,但当我尝试附加它们时,它会在其下生成文件夹。

rails-activestorage ruby-on-rails-5.2

10
推荐指数
2
解决办法
5666
查看次数

Rails 5.2的ActiveStorage图像上传错误:signed_id委托给附件,但附件为零

我在使用ActiveStorage上传图像/ pdf时出现问题.图像似乎没有问题上传,但是当我尝试显示它们时它们会导致错误.

我的blog模特has_one_attached :imagehas_one_attached :pdf.上传曾经工作(所以我知道我安装了ActiveStorage,我的亚马逊s3设置正确),但出了点问题.

唯一复杂的一点是我需要它才能工作,如果它有PDF或不(不是所有的博客都有一个PDF ...所有应该有一个图像).

我的blog#create方法是:

  def create
    @blog = Blog.new(blog_params)
    @blog.user_id = current_user.id
    if @blog.published
      @blog.published_on = DateTime.current
    end

    respond_to do |format|
      if @blog.save
        if @blog.image.attached?
          @blog.image.purge
        end
        @blog.image.attach(params[:image])
        if @blog.pdf.attached?
          @blog.pdf.purge
        end
        @blog.pdf.attach(params[:pdf])
        format.html { redirect_to @blog, notice: 'Blog was successfully created.' }
        format.json { render :show, status: :created, location: @blog }
      else
        format.html { render :new }
        format.json { render json: @blog.errors, status: :unprocessable_entity }
      end
    end …
Run Code Online (Sandbox Code Playgroud)

ruby-on-rails-5 rails-activestorage

10
推荐指数
1
解决办法
1276
查看次数

Rails使用活动存储读取csv文件数据

我有这个课程,我正在使用主动存储

class MaterialsUpload < ApplicationRecord
  has_one_attached :csv_file
end
Run Code Online (Sandbox Code Playgroud)

这是附件

#<ActiveStorage::Attached::One:0x007ff1f0be9e90
 @dependent=:purge_later,
 @name="csv_file",
 @record=
  #<MaterialsUpload:0x007ff1f0c604f0
   id: 3,
   success: 0,
   errors_list: [],
   total: 0,
   created_at: Mon, 12 Feb 2018 14:43:35 UTC +00:00,
   updated_at: Mon, 12 Feb 2018 14:43:35 UTC +00:00>>
Run Code Online (Sandbox Code Playgroud)

有没有办法可以读取数据,所以我可以做这样的事情

string = materials_upload.csv_file.read
CSV.parse(csv_string, headers: true) do |row|
    # do something
end
Run Code Online (Sandbox Code Playgroud)

csv ruby-on-rails rails-activestorage

9
推荐指数
1
解决办法
3074
查看次数

Rails活动存储 - 打开/下载链接

一个问题Active Storage(刚刚更新到rails 5.2)试图打开附加文件,保存在blob上,重定向到root_path任何想法我怎样才能打开/下载它.

我在rails视图中的代码是:

<%= link_to(document.filename, rails_blob_path(document, disposition: "attachment")) %>
Run Code Online (Sandbox Code Playgroud)

TIA

ruby ruby-on-rails rails-activestorage ruby-on-rails-5.2

9
推荐指数
2
解决办法
5335
查看次数