Rails 5.2 활성 스토리지: 미리보기, Poppler 및 라이센스 트랩 해결
                                            
                                                
                                                
                                                
                                                
                                                
                                                 12610 단어  awsrubyrailsactivestorage
                    
신뢰하지만 검증
Heroku에서 믿음은 우리의 가장 중요한 가치이다.Rails 5.2에 Active Storage가 포함되어 있다는 사실을 알게 되면 모든 기능을 시도해 보겠습니다.액티브 스토리지의 가장 편리한 점 중 하나는 PDF와 비디오를 미리 볼 수 있다는 것입니다.파일에서 PDF나 비디오를 추출하는 작은 화면 캡처를 텍스트를 통해 자산에 링크하지 않고 페이지에 표시합니다.
Rails 5.2의 테스트 버전은 유행하는 소스 오픈 도구인 FFmpeg와 MuPDF를 사용하여 비디오와 PDF 미리보기를 생성합니다.우리는 우리의 안전과 법률 부서를 통해 이러한 새로운 2진 의존 관계를 심사했다. 그곳에서 우리는 MuPDF가 AGPL에 따라 허가된 것이고 일부 사용은 상업 허가가 필요하다는 것을 발견했다.만약 우리가 기본적으로 MuPDF를 Rails 5.2 + 응용 프로그램에 추가했을 뿐이라면, 우리의 많은 고객들은 MuPDF를 구매해야만 상업적으로 사용할 수 있다는 것을 모를 것이다.
2017년 9월, 제한적인 AGPL 라이센스는 public attention으로 증가했습니다.5.2 버전을 준비하기 위해 저희 엔지니어는 PDF 미리 보기 기능이 상업 허가 없이 오픈 소스 백엔드를 사용할 수 있도록 Active Storage를 업데이트하려고 노력합니다.2018년 2월에 우리는 Rails introducing the ability to use poppler PDF as an alternative to MuPDF에 PR을 개통했다.약 한 달 후, 공공 관계가 합병되었고, 현재 모든 Rails5.2 사용자는 Heroku에 있거나 Heroku 아래에서 PDF 미리보기를 보여줄 수 있으며, 상업 허가증을 구매할 필요가 없다.
Heroku 예시 응용 프로그램의 활성 저장소
만약 활성 저장소를 실현하는 응용 프로그램이 있다면, jump over to our DevCenter documentation on Active Storage을 사용할 수 있습니다.
또는 예시 프로그램을 사용할 수 있습니다.이것은 동영상, PDF, 이미지를 게시할 수 있는 디지털 게시판인 Rails 5.2 응용 프로그램입니다.view the source on GitHub을 사용하거나 Heroku 버튼을 사용하여 애플리케이션을 배포할 수 있습니다.
Note: This example app requires a paid S3 add-on.
다음은 동영상 예시로 이 응용 프로그램의 기능을 보여 준다.

홈페이지를 열 때 적당한 자산을 선택하고 표를 제출합니다.동영상에서
mp4 파일이 S3에 업로드되고 ffmpeg의 도움으로 Rails를 통해 동적 미리보기가 생성됩니다.아주 깔끔해요.Heroku의 활성 저장소
이 단추를 사용하여 예시 프로그램을 배치하면,
app.json을 통해 Heroku에서 실행하도록 설정되어 있지만, 자신의 프로그램이 설치되어 있다면, Heroku에서 실행하도록 설정하는 방법은 무엇입니까?DevCenter documentation for Active Storage 이후, 모든 dynos와 대화할 수 있는 파일 저장 서비스가 필요합니다.이 예는 S3에 Bucketeer이라는 Heroku 플러그인을 사용했지만 기존의 S3 인증서를 사용할 수 있습니다.
먼저 Gem 파일에 AWS gem for S3를 추가하고 이미지를 수정하려면 Mini-Magick을 추가합니다.
gem "aws-sdk-s3", require: false
gem 'mini_magick', '~> 4.8'
$ bundle install을 잊지 마십시오.다음은
amazon 파일에 config/storage.yml 옵션을 추가하여 S3 구성을 가리키며, 이 예에서는 Bucketer가 설정한 구성을 사용합니다.amazon:
  service: S3
  access_key_id: <%= ENV['BUCKETEER_AWS_ACCESS_KEY_ID'] %>
  secret_access_key: <%= ENV['BUCKETEER_AWS_SECRET_ACCESS_KEY'] %>
  region: <%= ENV['BUCKETEER_AWS_REGION'] %>
  bucket: <%= ENV['BUCKETEER_BUCKET_NAME'] %>
:amazon을 사용하여 스토리지를 구성하도록 애플리케이션을 설정해야 합니다.config.active_storage.service = :amazon
:local을 사용하여 파일을 디스크에 저장하는 것입니다.이것은 생산 과정에서 업로드 파일을 처리하는 확장 가능한 방식이 아니다.Heroku에 의외로 배치하면 파일이 처음에 업로드된 것처럼 보이지만, 여러 개의dyno를 실행하면 무작위로 요청할 때 사라집니다.dynos를 다시 시작하면 파일이 모두 사라집니다.ephemeral disk of Heroku in the DevCenter에 대한 더 많은 정보를 얻을 수 있습니다.마지막으로 생산에서 이 점을 실현하기 위해 마지막으로 필요한 것은 사용자 정의 buildpack을 설치하는 것입니다. 이 buildpack 설치는 자산 미리보기를 만드는 데 사용되는 바이너리 의존항
ffmpeg과 poppler을 설치합니다.$ heroku buildpacks:add -i 1 https://github.com/heroku/heroku-buildpack-activestorage-preview
기존 애플리케이션에 활성 스토리지 추가
만약 응용 프로그램이 아직 활성 저장소가 없다면, 그것을 추가할 수 있습니다.우선, 다음 명령을 실행하여 활성 저장소 blob 저장소를 활성화해야 합니다.
$ bin/rails active_storage:install
다음은 파일을 첨부하는 모델이 필요합니다.기존 모델을 사용하거나 새 모델을 생성할 수 있습니다.예제 응용 프로그램에서 대부분 비어 있는
bulletin 모델이 사용됩니다.$ bin/rails generate scaffold bulletin
$ bin/rails db:migrate
class Bulletin < ApplicationRecord
  has_one_attached :attachment
end
기존 양식이 있으면
file_fieldview helper를 통해 첨부 파일 필드를 다음과 같이 추가할 수 있습니다.<%= form.file_field :attachment %>
이 예시 프로그램에서 홈페이지는 폼과 보기를 포함합니다.bulletin controller에서 첨부 파일을 저장하고 사용자를 주 공지 목록으로 다시 지정합니다.
def create
  @bulletin = Bulletin.new()
  @bulletin.attachment.attach(params[:bulletin][:attachment])
  @bulletin.save!
  redirect_back(fallback_location: root_path)
end
Active Storage에서 시스템에 올바른 바이너리 파일이 설치되어 있으면 PDF 및 비디오의 경우
previewable? 메서드가true로 돌아갑니다.variable?이 설치되어 있으면 mini_magick 방법은true입니다.만약 이 두 가지 일이 모두 사실이 아니라면, 첨부 파일은 다운로드 후 가장 보기 좋은 파일일 가능성이 높다.이것은 how we can represent that logic입니다.<ul class="no-bullet">
  <% @bulletin_list.each do |bulletin| %>
    <li>
      <% if bulletin.attachment.previewable? %>
        <%= link_to(image_tag(bulletin.attachment.preview(resize: "200x200>")), rails_blob_path(bulletin.attachment, disposition: "attachment"))
        %>
      <% elsif bulletin.attachment.variable? %>
        <%= link_to(image_tag(bulletin.attachment.variant(resize: "200x200")), rails_blob_path(bulletin.attachment, disposition: "attachment"))%>
      <% else %>
        <%= link_to "Download file", rails_blob_path(bulletin.attachment, disposition: "attachment") %>
      <% end %>
    </li>
  <% end %>
</ul>
Reference
이 문제에 관하여(Rails 5.2 활성 스토리지: 미리보기, Poppler 및 라이센스 트랩 해결), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/heroku/rails-52-active-storage-previews-poppler-and-solving-licensing-pitfalls-2b80텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
                                
                                
                                
                                
                                
                                우수한 개발자 콘텐츠 발견에 전념
                                (Collection and Share based on the CC Protocol.)