web-dev-qa-db-ja.com

Rubyをポータブル実行可能ファイルにパッケージ化する

私は長い間これに対する良い解決策を見つけようとしてきました:

Rubyをそのプラットフォームに移植可能なフォルダーにインストールする確実な方法はありますか?作成しているディストリビューションに簡単にコピーできるフォルダーが欲しいので、 a Ruby環境 "外出中"。ポータブルRubyで終わる限り、ソースなどをコンパイルする必要がある場合は問題ありません。インストール。

これを解決しようとするリソースをいくつか見つけましたが、どれも私にとって満足のいくものではありません。

Portable Ruby on Rails environment

http://hcettech.blogspot.pt/2012/05/windows-portable-Rails-development.html

私にとって、これはRubyの大きな問題点です。クライアントにインストールせずにRubyスクリプトを動作させることができない場合は、最初にRuby、次にRuby is私の場合、本質的には良くありません。私/私たちがこれを理解できることを心から願っています。そうすれば、Rubyは、これまでよりもはるかに便利になります。


注: Releasy のようなものが存在することは知っていますが、それでも単純なRuby実行可能ファイルではありません。

私の目標は、.bat /.shスクリプトを使用してフォルダーを作成できるようにすることです。

#some bat/sh
./bin/Ruby ./my_script.rb

そして、はい、私が理解していないこの問題について何かがあれば私を撃墜してください。それは私にとって安心になるでしょう。

17
Automatico

私はこれにとても飽きてしまったので、私はそれに対して自分自身の解決策を作ることに決めました。数日後、私はついにこれを機能させました。


私が提示する:ルビー船

それは私が必要としていたものであり、うまくいけば、他の誰かがそれの恩恵を受けるでしょう!

それは本当に簡単です:リポジトリをダウンロードします(バイナリのためにかなり大きいです)。それをUSBドライブ、または好きな場所に置いてから、次のようにします。

path/to/Ruby_ship/bin/Ruby_ship.sh -v
=> Ruby 2.1.2p95 (2014-05-08 revision 45877) [x86_64-darwin13.0]

これは、LinuxとMac、またはWindows用です。

path\to\Ruby_ship\bin\Ruby_ship.bat -v
=> Ruby 2.1.2p95 (2014-05-08 revision 45877) [i386-mswin32_100]

Ruby_shipラッパーは通常のRubyと同じように機能するため、スクリプトを渡すか、通常のRubyコマンドを使用する場合は何でもできます。

Ruby Shipにバンドルされているバージョンが気に入らない場合は、toolsディレクトリにあるコンパイルスクリプトを使用してください。お気に入りのバージョンのRubyのソースコードをダウンロードしてください。 XYZ、次にこれを行います:

# *nix (osx/linux/...)
path/to/Ruby_ship/tools/Ruby_ship_build.sh path/to/Ruby-X.Y.Z.tar.gz

# windows
path\to\Ruby_ship\tools\Ruby_ship_build.bat path\to\Ruby-X.Y.Z.tar.gz

これにより、Rubyのフレーバーが構築され、ラッパーが正しくセットアップされます。これで、RubyバージョンXYZは移植可能です!このフォルダーをコピーして、必要な場所に貼り付けてください。ただし、現在のプラットフォーム用にのみコンパイルされるため、他のプラットフォームが必要な場合は、それらのプラットフォームでもコンパイルしてください。

コンパイルプロセスにはいくつかの要件があります。 githubサイトを見てください

とにかく、他の人がこれが役に立つと思うかもしれないことを願っています!うまくいかない場合は、問題を作成してください。調査させていただきます。

20
Automatico

古い投稿ですが、私の解決策を確認することもできますrb2exe。 Rubyアプリケーションを、単一のポータブルなスタンドアロン実行可能ファイルに変換します。

RailsおよびGemfileをサポートします。

インストール/使用法:

gem install rb2exe

echo "puts 'Hello world'" > test.rb
rb2exe test.rb
./test

ここで、それが何をするのかを段階的に説明します。

http://www.learnwithdaniel.com/2016/08/Ruby-to-portable-exe-app/

1
Daniel Loureiro

あなたの問題についての私の理解を明確にするために、スクリプトと一緒にRubyをパッケージ化できるようにしたいのですが、すべて1つのディレクトリに含まれています。

.
├── bin
│   └── Ruby
├── my_script.bat
├── my_script.sh
└── my_script.rb

これを複数のプラットフォームで機能させたいと考えています。バッチスクリプトとシェルスクリプトを可能性として挙げているので、* NIXとWindowsの両方が潜在的なターゲットであると想定しています。これは、複数のプラットフォーム固有のRubyバイナリを出荷することを意味します。

また、JRubyをサポートしていないgemについて言及しているため、ネイティブ拡張機能を備えたgemを使用している可能性があります。

これらの要件をすべて満たすツールはありません:(

ネイティブ拡張機能の使用をやめ、ターゲットプラットフォームごとにパッケージを構築する場合は、次のことができます。

  • Ocra で配布可能な自己完結型のWindowsを構築する
  • pkgr でDebianパッケージをビルドする
  • システムに依存する標準のOSXインストーラーをビルドするRuby OSXで(ただし そのアイデアについての質問

言うまでもなく、これにはかなりのオーバーヘッドが伴います。特に、これらのステップを完全に自動化し、CIの一部としてテストする場合(完全なCIビルドの最後にスモークテストとして実行することをお勧めします)。

1
Duncan Bayne