Skip to content

shu-i-chi/rubyzip-password-zip-example

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

14 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

rubyzip gemでパスワード付きZIPを作成する例

rubyzip gemを使って、パスワードなし/付きZIPファイルを作成するモジュールの、サンプル実装です。 ZipGeneratorというモジュールを実装しています。

実装したモジュール・メソッドの詳細は、[Ruby] rubyzipでパスワード付きZIPファイル(良くないけど)を作成する(Zenn)を確認してください。 (リンク先で説明していますが、まずは「そもそもパスワード付きZIPファイルの使用は非推奨!ということをご認識ください。)

このリポジトリでできること

  • モジュールのサンプル実装の確認(lib/ディレクトリ配下)

    • ZipGeneratorモジュールを実装しています
  • 動作確認サンプルプログラムの確認・実行(example.rb)

    • ZipGeneratorモジュールの使い方を確認できます
  • モジュールのYARDドキュメントの生成・閲覧

    • メソッドの詳細を確認できます

バージョン

Ruby 3.1.2, rubyzip 2.3で動作確認をしています。

目次

デプロイ方法

まずは、このGitリポジトリをgit cloneし、クローンされたディレクトリ内に移動します:

$ git clone https://github.com/shu-i-chi/rubyzip-password-zip-example.git
# (出力は省略)

$ cd rubyzip-password-zip-example/

このあとbundle installしますが、「YARDドキュメントを生成するか否か」で分岐します:

YARDドキュメントを生成する場合

特段何のオプションもつけずにbundle installしてください。

$ bundle install
# (出力は省略)

YARDドキュメントを生成しない場合

GemfileにてYARD gemをdevelopmentグループに指定しています。

というわけで、このグループを除外してbundle installするようにします。

$ bundle config set --local without 'development'
# => .bundle/configファイルが生成され、除外設定が書き込まれる

$ bundle install

bundle install --withoutオプションは非推奨

将来の変更にて、bundle installにつけて実行->裏で設定を記憶する系のオプションは、廃止予定です。(BundlerがCLIフラグを記憶しないようになる。)

The --clean, --deployment, --frozen, --no-prune, --path, --shebang, --system, --without and --with options are deprecated because they only make sense if they are applied to every subsequent bundle install run automatically and that requires bundler to silently remember them. Since bundler will no longer remember CLI flags in future versions, bundle config (see bundle-config(1)) should be used to apply them permanently.

bundle configコマンドで設定を行うようにしましょう。

$ bundle config set --local without 'development'

$ cat .bundle/config
---
BUNDLE_WITHOUT: "development"

動作確認サンプルプログラムを実行する

example.rbというファイルが、ZipGeneratorモジュールを使用するサンプルのプログラムになっています。

トップディレクトリで、以下のようにして実行してください:

$ bundle exec ruby example.rb
EXAMPLE 1. -- ZipGenerator.get_zip_buffer
 > ZIPファイル [ tmp/zipfile_buffer.zip ] を作成
 > パスワード付きZIPファイル [ tmp/zipfile_buffer_pw.zip ] を作成(パスワード:buffer)

EXAMPLE 2. -- ZipGenerator.get_zip_tempfile
 > ZIPファイル [ tmp/zipfile_tempfile.zip ] を作成
 > パスワード付きZIPファイル [ tmp/zipfile_tempfile_pw.zip ] を作成(パスワード:tempfile)

EXAMPLE 3. -- ZipGenerator.zip_archive
 > ZIPファイル [ tmp/zipfile_file.zip ] を作成
 > パスワード付きZIPファイル [ tmp/zipfile_file_pw.zip ] を作成(パスワード:file)

$ ls tmp/
file_1  file_2  zipfile_buffer.zip  zipfile_buffer_pw.zip  zipfile_file.zip  zipfile_file_pw.zip  zipfile_tempfile.zip  zipfile_tempfile_pw.zip

tmp/ディレクトリ配下にZIPファイルが作成されます。

ZIPファイルの解凍をしてみたり、example.rbのZIPファイルのパスワードを変更してみたり、エラーが出るようにしてみたりなどを試してみてください。

YARDドキュメントを見るには

(デプロイ時に、YARDドキュメントを生成する場合を選んでいる必要があります。 もしそうでない場合は、YARD gemを含めてデプロイし直したい場合の手順でYRAD gemをインストールしてください。)

トップディレクトリで、以下のコマンドを実行します(まとめてbundle exec yard doc && bundle exec yard serverでもいいです)。

$ bundle exec yard doc
# doc/ディレクトリ配下にHTMLドキュメントを生成
# (出力は省略)

$ bundle exec yard server
# => Webブラウザで、http://localhost:8808にアクセス

Webブラウザで、http://localhost:8808にアクセスしてください。

ポートを変更したい場合

ポートを指定したい場合は、bundle exec yard server -p <port番号>のようにしてください。

YARD gemを含めてデプロイし直したい場合

デプロイ時にYARDドキュメントを生成しない場合の方を選択した場合は、bundle config unsetでgemグループ除外設定を解除して、bundle updateします:

$ bundle config unset --local without

$ bundle update
Fetching gem metadata from https://rubygems.org/...
Resolving dependencies...
Using bundler 2.3.7
Using rubyzip 2.3.2
Using webrick 1.7.0
Using yard 0.9.28
Bundle updated!

$ bundle exec yard --version
yard 0.9.28

(おまけ:.bundle/configの様子)

$ cat .bundle/config
---
BUNDLE_WITHOUT: "development"

$ bundle config unset --local without

$ cat .bundle/config
---

ディレクトリ構成

$ tree -F
.
├── Gemfile
├── Gemfile.lock
├── README.md
├── (doc/) # YARDドキュメントを生成した場合に作成される
├── example.rb # 動作確認サンプルプログラム
├── lib/
│   ├── zip_generator/
│   │   ├── errors.rb     # 例外を定義
│   │   └── file_entry.rb # FileEntry Structを定義
│   └── zip_generator.rb  # ここに各メソッドを定義
└── tmp/ # example.rbが、ZIPファイルに含めるファイルや生成したZIPファイルを、ここに格納

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages