[解決済み] Rubyの基本的なプロジェクトはどのように設定するのですか?
2022-10-23 20:34:20
質問
10~20のクラス/ファイルからなる小さなRubyプロジェクトを作りたいと思っています。私はいくつかのgemsを必要とし、私はテストフレームワークとしてRSpecを使用したいと考えています。
私は後でgemを作りたいかもしれませんが、それは確実ではありません。
プロジェクトの基本的な構造をセットアップする方法を示すハウツーやガイドはありますか?
私が持っている質問は、次のとおりです。
- すべてのカスタム エラー/例外をどこに置けばよいですか。
- lib、bin、src などのディレクトリの命名規則がありますか?
- テストデータやドキュメントはどこに置けばいいのでしょうか?
- プロジェクトでアクセスできるように、すべてのファイルをどこに保存すればよいですか。
私はゼロからすべてを行うことができることを知っていますが、いくつかの指導を希望します。コピーできるいくつかの良い逸品がありますが、何が本当に必要で、何を削除できるのか、確信が持てません。
私は http://gembundler.com/ を見ましたが、Bundlerをセットアップすると止まってしまいます。
どうすれば解決しますか?
には、まず最初に
bundle gem
コマンドと
rspec --init
.
~/code $ bundle gem my_lib
create my_lib/Gemfile
create my_lib/Rakefile
create my_lib/LICENSE.txt
create my_lib/README.md
create my_lib/.gitignore
create my_lib/my_lib.gemspec
create my_lib/lib/my_lib.rb
create my_lib/lib/my_lib/version.rb
Initializating git repo in /Users/john/code/my_lib
~/code $ cd my_lib/
~/code/my_lib $ git commit -m "Empty project"
~/code/my_lib $ rspec --init
The --configure option no longer needs any arguments, so true was ignored.
create spec/spec_helper.rb
create .rspec
-
にコードを記述します。
lib
-
スペック
spec
-
テストデータまたはドキュメントが入る
spec/fixtures/
-
すべてのrubyファイルを
lib/my_lib.rb
. 例外の定義もこのファイルで行うか、独自のファイルで行うか、お好みでどうぞ。 -
C のソースファイルは
ext/my_lib
-
シェルスクリプトと実行可能ファイルは
bin
迷ったら、他の宝石がどのようにレイアウトされているかを見ればいいのです。
さらに詳しい情報。
他の開発者が使いやすいように、あなたのgemspecにrspecを開発依存として追加してください。
-
my_lib.gemspecを編集し、以下を追加します。
gem.add_development_dependency 'rspec'
とgem.add_development_dependency 'rake'
を底部近くに配置します。 -
追加
Bundler.setup
とrequire 'my_lib'
を spec/spec_helper.rb の先頭に追加して、spec を実行するときに gem の依存関係がロードされるようにします。 -
追加
require "rspec/core/rake_task"
とtask :default => :spec
をRakefileに追加することでrake
を実行するとspecが実行されます。
最新作に取り組んでいる間に ガード・スペック を使用すると、時間と手間を省くことができます。 自動的に を実行し、スペックに問題がある場合は警告を発します。
~/code/my_lib $ git add spec/spec_helper.rb
~/code/my_lib $ git commit -am "Add RSpec"
~/code/my_lib $ vim my_lib.gemspec # add guard development dependency
~/code/my_lib $ bundle
~/code/my_lib $ bundle exec guard init
~/code/my_lib $ vim Guardfile # Remove the sections below the top one
~/code/my_lib $ git add Guardfile
~/code/my_lib $ git commit -am "Add Guard"
満足のいくものができたら、githubにプッシュしてください。
# create a github repository for your gem, then push it up
~/code/my_lib $ curl -u myusername https://api.github.com/user/repos -d '{"name":"my_lib"}'
~/code/my_lib $ git remote add origin [email protected]:myusername/my_lib.git
~/code/my_lib $ git push
そして、Rubygems.orgでgemをリリースする準備ができたら、次のように実行します。
rake release
を実行すると、手順が説明されます。
~/code/my_lib $ rake release
その他の参考文献
- その Rubygems パターンガイド (そして ホームページ を、Matheus Moreira氏の回答から引用しています。これらは本当に素晴らしいリファレンスです。
- 私の始め方 スティーブ・クラビック著
- 練習問題46: プロジェクトスケルトン ゼット・ショー著の Rubyを学ぶハードな方法
- Bundlerを使った新しいGem Railscastsのビデオ
- ドキュメント
関連
-
[解決済み】Ruby: 特定のバージョンのruby gemをインストールする方法は?
-
[解決済み] Rubyのswitch文の書き方
-
[解決済み] Rubyで配列に値が存在するかどうかを確認する方法
-
[解決済み] Rubyからシェルコマンドを呼び出す方法
-
[解決済み] Rubyでnilとemptyとblankを理解する方法
-
[解決済み] Rubyで文字列を小文字・大文字に変換する方法
-
[解決済み] Rubyのattr_accessorとは何ですか?
-
[解決済み] Ruby on Railsで現在の絶対URLを取得するにはどうすればよいですか?
-
[解決済み】Djangoプロジェクトの作業ディレクトリ構造に関するベストプラクティス【終了しました
-
[解決済み] Rubyで文字列が正規表現にマッチするかどうかをチェックする最も速い方法?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] Rubyの理想的なプロジェクト構造
-
[解決済み] Rubyの継承とミキシンの比較
-
[解決済み] ファイルのテキストをパターン検索し、指定された値で置き換える方法
-
[解決済み] Rubyで空のファイルを作成する:"touch "と同等?
-
[解決済み] ハッシュの配列をハッシュの値でソートするにはどうしたらいいですか?
-
[解決済み] ruby システムコマンドの終了コードチェック
-
[解決済み] RubyのREPLを開くコマンドは何ですか?
-
[解決済み] Rubyでjavaのインターフェースに相当するものは何ですか?
-
[解決済み] rspecでテストグループを無効にする?
-
[解決済み] Ruby初心者が注意すべきRuby Gotchasとは?[クローズド]