このプロジェクトは、次のことを目指しています。
仕様の概要:
このAPIからデータを消費するカウンターパートクライアントモバイルアプリは次のとおりです - > android -base
Rubyバージョン2.3.0をインストールし、Ruby Environment Managerで設定します(詳細はこちら)。
Postgresをインストールし、PostgreSQLサーバーを前景に起動します(こちらの詳細)。
リポジトリをクローンして中に入ります。
git clone git://github.com/jordifierro/rails-api-base.git --origin rails-api-base your-project-name
cd your-project-name
./bin/rename_project YourProjectName
./bin/remove_notes
./bin/create_psql_user yourprojectname
./bin/setup
rspec
./bin/reset_git https://github.com/yourusername/your-project-name.git
それだけです、あなたは今あなた自身のアプリの開発を始めることができます!
(LocalHostで開発中に、ユーザーの確認を受け取り、パスワードメールを回復するためにMailCatcherを開始します)
gem install mailcatcher
mailcatcher
アプリケーション自体はほとんど空であり、基本的なモジュールを提供し、構造をいくつかのパターンで実装し、サンプルコードを提供することのみを目的としています。ここに仕様があります:
このアプリにはRails-API関連のモジュールのみが含まれるため、通常のアプリよりも薄いですが、いくつかの機能がありません(必要に応じて手動で追加できます)。 APIのアーキテクチャは、次のようなRailsとHTTPのRestful Good Practicesに従います。
エンドポイントルートとコード構造は、新しいAPIバージョンを追加する準備ができています。このバージョンは、最初のバージョンを使用するために、 application/vnd.railsapibase.v1などの値を使用してheaders['Accept']を介して選択されます。
アプリサンプルコードを提供するために、 titleとcontentで構成されたnotes (手書きの紙の表明など)を管理するためのコードが開発されました。したがって、アプリには、そのメモで動作するためのノートルート、コントローラー、モデル、RSPECがあります。
そのユニークな目的は、新しいコードを追加する方法のガイドになることであるため、 bin/remove_notesシェルスクリプトによって削除されます。
APIのグローバルコントローラー機能を構築するために、ActiveSupport :: Concertとしてさまざまなモジュールが実装されており、偽のコントローラーを使用してテストされています。これらのモジュールは、他のコントローラーの父親コントローラーであるApicontrollerに含まれています(この投稿を確認してください)。現時点では、認証、エラー処理、国際化、バージョンの有効期限の4つのモジュールがあります(これを確認してください)。コードの気候とは、これと残りのコードのすべてがグッドプラクティスに従うことを確認するために使用されるサービスです(プロジェクトを使用するにはそれをアクティブにする必要があります)。
CodeClimeは、CLIでローカルに実行することもできます。
ほとんどすべてのAPIにはユーザー、セッション、および認証が必要なため、これはこのアプリの最も重要な機能です。選択されたソリューションは、セッションとユーザーを処理するためのカスタム実装でhas_secure_passwordとhas_secure_tokenを使用します。
ユーザーがログインするとトークンが返され、後で認証するリクエストでheaders['Authorization']に設定する必要があります。それについての詳細(この投稿)
バージョンを使用できるかどうかを確認するには、各メソッドが呼び出される前にフィルターを使用するモジュールがあります。バージョンの有効期限が切れた場合、エラーが返され、クライアントから有効期限を確認するエンドポイントもあります(例:ユーザーにアプリを更新するように警告する)。有効期限を具体的なバージョンに設定する場合は、integerフォーマットされた文字列をENV['LAST_EXPIRED_VERSION']に設定するだけです。指定されたすべてのバージョンは、尋ねられたときにアップグレードエラーメッセージを送信します。いくつかのバージョンに警告を設定するシステムは同じです。Env ENV['LAST_WARNED_VERSION']を使用して、警告したいより高いバージョンを設定します。それについての詳細(この投稿)
このアプリは、英語(デフォルト言語)とスペイン語(翻訳例として)に翻訳されます。 request.env['HTTP_ACCEPT_LANGUAGE'] ( Accept-Languangeヘッダーを介して設定できます)からロケールを取得する単純なモジュールがあり、適切な翻訳を自動的に返すためにシステムに設定します。それについての詳細(この投稿)
必要なすべての翻訳が特定の言語に設定されていることをテストするために、 spec_helper.rbファイルへの次の行を除外し、ターゲット言語を配置し、 rspecを実行します。
I18n.default_locale = :es
APIクライアントをある程度制御するために、ユーザーを作成する有効なクライアントであることを確認するためにアクティブ化できる秘密のAPIキー検証システムがあります。このサービスをアクティブにするにはENV['SECRET_API_KEY']に値を設定するだけです。 Secret APIキーは、Create Create New Userメソッドを呼び出すときにheaders['Authorization']で送信する必要があります。
このプロジェクトは、TDDプロセスを使用して開発されており、すべてのコードは、BetterSpecs.orgで定義されたベストプラクティスガイドラインに従って、RSPECを使用してテストされています。そのように保つことが重要です。コードの気候は、テストがすべてのコードケースをカバーすることをチェックします。 Travis-CIは、プッシュが行われるたびにテストを実行する継続的な統合システムです。このサービスを使用する場合は、Webサイトでそれらを有効にする必要があります。そうでない場合は、 .travis.ymlファイルを削除するだけです。
コードを手動で変更してファイルを準備して新しいプロジェクトを開始する負担を回避するために、いくつかのスクリプトが実装されています。それらをbin/フォルダー内で見つけることができます(使用後に自己破壊されます)。
それらはシェルチェックによって分析されています。
展開の問題を回避するために、Postgresデータベースは、テストと開発のためのデータベースシステムとして最初からセットアップされています。 HerokuがデフォルトのDBシステムとしてそれを使用するという事実も考慮されています。
このプロジェクトでは、Rails 5.1.4(APIモジュール)とRuby 2.3.0を使用しており、GemyRasiumサービスを使用して最新の状態に保つつもりです。リポジトリを使用する場合は、このサービスをアクティブにする必要があります。
コードの優雅さと読みやすさを向上させるために、このRubyスタイルガイドは参照として使用されています。 Rubocop Gemは、そのスタイルガイドに基づいたRuby Static Code Analizerです。ただ実行:
gem install rubocop
rubocop
.rubocop.ymlファイルが構成を定義することに注意してください(使用していない場合は削除)。
応答は、ActiveModelserializers GEMを使用してフォーマットされます。 Serializersは、出力JSONをフォーマットする責任があり、このレイヤーをモデルとコントローラーから切り離す良い方法です。さらに、各APIバージョンの出力を直接妨害するため、コントローラー(例: Api::V1::Serializer )のようにバージョン化されています。これは、古いバージョンの契約を維持するのに役立ちます。
このAPIからデータを消費するカウンターパートクライアントモバイルアプリは次のとおりです - > android -base
私はRailsの経験豊富な開発者ではないので、すべての提案と貢献は大歓迎です!
rspec
rubocop
残念ながら、貢献者はまだありません。
http://jordifierro.com