re:Dine GINZA / リダインギンザ

今宵も6人の選ばれたシェフたちの熱いバトルが繰り広げられている。

f:id:H_Nagisa:20190620011407j:plain

re:Dine GINZA(リダイン ギンザ)は、その名の通りDine(外食)をre:(再定義)する、日本初のシェア型レストラン。
120席の客席と、食の頂点を目指す6人の挑戦者(シェフ)。
シェフたちはそれぞれアイデアにあふれた、自慢の料理を用意して待っています。
どのシェフの料理を注文するかは、あなた次第。
そのひと皿の選択が、シェフの運命を決めます。
若い料理人のアイデアが次々に形になり、そしてそれを一般のお客さまが日常的に楽しむことができる、
これまでの飲食業界の常識を覆すレストラン』。

 

f:id:H_Nagisa:20190620011449j:plain

もう一つの顔は、「お客さまの投票で出店が決まる、総選挙型レストラン」。
このレストランでは、来店したあなたが「どのシェフを応援したいか」を決めて、一票を入れることができます。
つまり、6人のシェフが作る料理の中から、興味を持った料理を選び、実際に食べてみて、「この料理おいしい!」「このシェフの料理をもっと食べたい!」と思ったら、その1人のシェフに投票していただきます。
この投票数と、実際の売上額などを集計し、人気ランキングとして店内やお店のWebサイトなどで公表します。
そして、一定期間ランキング上位を続けたシェフは「卒業」となり、独立支援を受けることが可能る。
食の体験型エンターテイメント。

今最も話題の予約の取れないレストランといっても過言ではないだろう。

f:id:H_Nagisa:20190620011559p:plain

 

問い合わせ先

  • リダインギンザ re:Dine GINZA
  • 営業時間/月~金    8:00~23:00(フードL.O:22:00、ドリンクL.O:22:30)
  •      土・日祝 10:00~23:00(フードL.O:22:00、ドリンクL.O:22:30)
  • 定休日/不定
    予算/ランチ 1,000円~2,000円、 ディナー 4,000円~8,000円
    席数/120席
    喫煙可否/分煙 ※喫煙スペースあり
    TEL/050-3628-5009
    住所/東京都中央区銀座4丁目3-1 並木館銀座9F

Ruby、Ruby on Railsで開発している時に起こしやすい4つのエラー

 

ArgumentError

エラー解決の流れ

確認する際の大きな流れは、

①でエラー内容と場所の大枠を確認。
②でエラー内容を更に詳しく知り
③④でエラー箇所を具体的に確認する。

となります。この流れを意識しておいてください。順番に確認してみます。

①Argument Error in Users#edit

Argument Error → メソッドの引数の数が合っていないときや、引数が空であるときに発生するエラーです。ここでは、引数@userが空であるためエラーが起きています。ちなみに Argumentは、「引数」という意味です。

 

in Users#edit → エラーの場所を「コントローラ名#アクション名」という形式で示します。具体的には、Usersコントローラのeditアクションのビューです。

 

②First argument in form cannot nil or be empty

この文章は①よりも具体的なエラーの内容です。今回は、

First argument in form → フォームの中にある1番目の引数(@user)が
nil or be empty → 存在していない or 空っぽ

であることを示しています。引数はコントローラから持ってきているので、ビューだけでなくコントローラにも原因があると考えます。

引数がうまく渡せていないときに考えられる具体的なエラーの例は、

・ビューに書いてある変数のスペルミス
・コントローラで変数の定義がおかしい

の2つです。

③Showing /vagrant/bookers/app/views/users/edit.html.erb where line #8 raised:

この一文は①よりも具体的なエラーの場所を示しています。
/vagrant/bookers/app/views/users/edit.html.erb は、エラーが起きているファイルのパスです。
今回は、その8行目(line #8)がエラーであることがわかります。

②で考えられたエラー内容と結びつけると、
viewでform_forに@user(スペルはコントローラと同じであるとします。)を渡していても、
コントローラで@userにUserオブジェクトが渡されていない、ということが考えられます。

したがって①〜③より、
コントローラのeditアクション内に @user = User.new と書くことでエラーを解決できると判断できます。

④実際のコード画面

④は③と対応しているコード画面です。
実際のコードで、③よりもピンポイントでエラー箇所を教えてくれています。

 

NoMethodError

①NoMethodError in Users#show

NoMethodError → 定義されていないメソッドが呼び出されたときに起きるエラーです。

in Users#show → Usersコントローラのshowアクションのビューでエラーが起きていることを示しています。

②Undefined method 'name_miss' for #<User:~~~>
 Did you mean? name_was

この文章は①よりも具体的なエラーの内容です。今回は、

Undefined method 'name_miss' → 「name_miss」というメソッドが定義されていません。undefinedは「定義されていない」という意味です。
for #<User:~~~> → Userモデルに対して
というエラーの意味となっており、メソッドが存在しないことがエラーの原因だと考えられます。

さらに「Did you mean? name_was」があります。
これは、記述してあるメソッドがスペルミスで、name_wasではないのか?とRailsが提案しています。
これでエラーが解消されることもありますが、今回はこのまま検証を進めます。

③Showing /vagrant/bookers/app/views/users/show.erb.html where line #15 raised:

この一文は①よりも具体的なエラーの場所を示しています。

②で考えたエラー内容と結びつけると、
@userでユーザー情報を持っていても、name_missというカラムが存在しないためエラーが起きている、と考えられます。

したがって①〜③より、
・Userテーブルにname_missというカラムを追加する
・name_wasに記述し直す

以上の2つどちらかでエラーが解消できると判断できます。

 

SyntaxError

①SyntaxError in UsersController#show

SyntaxError → コードの中にRubyの文法エラーがあるときに発生します。Syntaxは「構文」という意味です。

in Users#show → Usersコントローラのshowアクションのビューでエラーが起きていることを示しています。

②/vagrant/bookers/app/views/users/show.html.erb:85 syntax error, unexpected end-of-input, expecting keyword_end end ^

この一文は①よりも具体的なエラーの場所・内容・解決法を示しています。
ここはそのままの日本語訳に加えて説明すると、

場所:/vagrant/bookers/app/views/users/show.html.erb:85
内容:syntax error, unexpected end-of-input, → 構文エラーで、ビューで処理の終わりを意味する<% end %>が過不足している可能性があります。
  unexpectedは「予期しない」、end-of-inputは「input(ビューファイルのコードの終わり)の終わり」を意味します。
解決法:expecting keyword_end end ^ → <% end %>を追加する or 余分な<% end %>を消す。

と解決方法まで提示してあります。今回のように③の画面が真っ白や、②のエラー文が何行も出ていて読めないといった場合は今回のように些細なミスであることが多いです。

 

RoutingError

①Routing Error

現在のルーティングを確認しましょう。
③部分を確認するか、以下のコマンドを実行して確認します。
Routing Error → routes.rbで定義したルーティングに合わない場合に起きるエラーです。

②No route matches [GET] "/users"

今回はブラウザで、「localhost:3000/users」にアクセスしたときに、usersコントローラのindexアクションを実行したいことを前提とします。

ルーティングエラーが起こっていて、①でルーティングを確認して足りなかった場合は、
アプリケーション内の「routes.rb」ファイルに足りないルーティングの記述を追加すれば良いことがわかります。

今回の場合は、httpメソッドの「get」とurl「/users」、usersコントローラのindexアクションを結びつけたいため、

get '/users' => 'users#index'

と記述することで解決します。

 

__________

xoxo ( `ー´)ノ

 

 

 

 

 

ラレンツァ L’Alleanza|神田

ラレンツァ L’Alleanza|神田

f:id:H_Nagisa:20190616234949j:plain

地下鉄・末広町駅より徒歩1分の場所に位置する「ラレンツァ L’Alleanza」は、神楽坂の著名なフレンチレストラン「ラリアンス」が手掛ける、新感覚のイタリアンを提供するお店。お店のある界隈は秋葉原にも近い賑やかな場所ですが、店内は地下1階ということもあり、ゆったりと落ち着いた面持ちです。

f:id:H_Nagisa:20190616235017j:plain

神楽坂「ラリアンス」の鈴木剛総料理長をシェフに迎えたこちらのお店が目指すのは、長い人生をより楽しくしてくれるレストラン。都会の喧騒を忘れさせてくれる寛ぎの空間で、旬の食材にこだわった体に優しくおいしい料理の数々と、イタリアワインを味わう…そんな、純粋に楽しい時間を提供してくれます。

人気のプランはランチコース「【デザートはお好きなだけ】前菜・選べるパスタ&メイン・ワゴンデザート・カフェなどプリフィクスランチ2,900円」。パスタは3種類から選べるようになっており、たとえばある日のメニューは、ウニのスパゲッティーニ、春キャベツとシラスのスパゲッティーニをワサビ風味で、旬魚介のトマトフェットチーネ…といった内容。選ぶ時間もまた楽しいものです。そしてデザートはワゴンから好きなだけいただくことができ、最後までぬかりなく、幸せなひとときを演出してくれます。

問い合わせ先

  • ラレンツァ L’Alleanza
  • 営業時間/11:30~15:30、17:30~23:00
    定休日/日(土曜日はディナーのみ営業)
    予算/ランチ 2,000円~2,999円、 ディナー 6,000円~7,999円
    席数/50席(個室1室)
    喫煙可否/分煙 ※喫煙スペースあり
    TEL/03-3833-9321
    住所/東京都千代田区外神田6-13-11 ミクニビルB1F

モデルとデータベース

モデルとは

モデルは、データベースにアクセスするための機能を担当しています。 
app/models以下のモデル名.rbというファイルが対象となります。

 

https://web-camp.online/uploads/contents/131/2.png

 

データベースとモデルの関係性

データベースはデータの入れ物ですが、そこにデータを入れたり取り出したりするためには、SQLと言われる言語でアクセスする必要があります。
モデルはデータベースとのやり取りを簡潔にしてくれるため、このSQLを使うことなくデータを利用することが出来ます。

つまり、SQL文がRubyではいらない

 

モデルの作成

データベースとやり取りをする部分である「モデル」を作成していきます。
「Post」という名前の「モデル」を作成していきます。
実際にモデルを作成する際のコマンドは以下のとおりです。

$ rails g model モデル名

今回は「Post」という名前のモデルを作成します

$ rails g model Post

と入力します。

 

実行すると以下のメッセージが流れます。create ~~と書いてあるのが、このコマンドによって生成されたファイルです。

$ rails g model Post
Running via Spring preloader in process 4271
      invoke  active_record
      create    db/migrate/20180907051856_create_posts.rb
      create    app/models/post.rb
      invoke    test_unit
      create      test/models/post_test.rb
      create      test/fixtures/posts.yml

ここで作成されたファイルのうち、大事なものは

・app/models/post.rb
・db/migrate/(作成した日付時間)_create_posts.rb

この二つです。以下、二つ目のマイグレーションファイルについて解説していきます。

 

マイグレーションファイルとは

マイグレーションファイルは、テーブルの設計図です。
このファイルに記載されている内容でテーブルの列、名前(テーブル名、カラム名)が決まります。

ファイル名を見ると、create_postsと書いてあると思います。postsと書かれている部分はテーブル名になります。コマンド実行時にはPostと単数形でしたが、テーブル名はモデル名の複数形となります。このように、Railsでは命名規則が厳密に決められています。

テーブルとモデルの結びつきは、名前で決定する

情報は、テーブルに保存されます。テーブルに保存された情報を引き出すのは、そのテーブルに対応するモデルとなります。テーブルとモデルの関連付けは名前によって決定します。

 モデルの命名規則

Railsでは、ファイルやテーブルなどの命名を規則に従った形にする必要があります。モデルとテーブルに関する命名規則は以下のようになっており、これに従えばテーブルとモデルが結びつきます。

種類 概要 名前例
モデル名 先頭大文字、単数形 Post
モデルのファイル名 先頭小文字、単数形 post.rb
テーブル名 先頭小文字、複数形 posts

 

マイグレーションファイルの編集

では早速、設計図にテーブルの内容を書いていきましょう。
設計図の書式は以下のとおりです。

create_tableという処理の do ~ end 内に書き込むことによってカラムを定義できます。

  t.データ型名 :カラム名

とします。

 

def change
    create_table :テーブル名 do |t|
        t.データ型 :カラム名
    end
end

 

title(タイトル)
body(本文)
この二つのカラムを定義します。どちらも文字列を保存したいので、カラムのデータ型はstring

class CreatePosts < ActiveRecord::Migration[5.0]
 
    def change        
        create_table :posts do |t|
        # 以下の2行を追加
            t.string :title
            t.string :body            t.timestamps
        end
    end
end

 

マイグレーションを利用して、データベースへ反映

ここまでの記述でテーブルの設計図が完成しました。
設計図は完成しましたが、まだテーブルは作られていません設計図からテーブルを作成しなくてはなりません。
以下のコマンドを実行してください。マイグレーションファイル(設計図)からテーブルを作成するコマンドです

$ rails

データベースに「posts」という名前のテーブルが作成されます。

 

あとは、機能を作っていくだけです

__________

xoxo ( `ー´)ノ

 

 

 

 

 

viコマンド早見表

ファイル操作

キー 説明
:w 内容を保存
:q! 保存せず終了
テキスト編集
キー 説明
escキー コマンドモードへ切り替え
i カーソル位置の前から文字を入力
a カーソル位置の後ろから文字を入力
x 1文字を削除
yy 1行コピー
p コピーを貼り付け
dd 1行削除
u 直前のコマンドを取り消し
移動
キー 説明
0 行頭へ移動
$ 行末へ移動
gg ファイル先頭へ移動
G ファイル末尾へ移動
Control+F 画面を下にスクロール
Control+B 画面を上にスクロール
その他
キー 説明
:set number 行番号をつける。
「/」を入力後、検索する文字を入力。
次の文字を検索するときは「n」を入力。前の文字を検索するときは「n」+シフトキーを入力します。
文字を検索する。

Gitコマンド早見表

[初回]ローカルにリポジトリを作成し、リモートにプッシュする際の手順 

 

コマンド 説明 
git init 現在いるディレクトリをgitで管理するための設定ファイルを生成する。
git add [file] [file]の部分にファイル名を指定することで、指定したファイルをインデックスに追加することができます。
git commit -m "コメント"   メッセージをつけて変更履歴を保存する。
git remote add origin [url] #originという名前でリモートリポジトリのURLを登録する。
git push origin [branch名] ローカルの変更をリモートリポジトリにアップロードする。[branchname]にアップロードしたいブランチの名前を指定します。

[2回目以降]ローカルにリポジトリの変更をリモートにプッシュする際の手順

コマンド 説明 
git add [file] [file]の部分にファイル名を指定することで、指定したファイルをインデックスに追加することができます。
git commit -m "コメント" メッセージをつけて変更履歴を保存する。
git push origin [branch名] ローカルの変更をリモートリポジトリにアップロードする。[branch名]にアップロードしたいブランチの名前を指定します

リモートのリポジトリをローカルに複製する(ダウンロード)

コマンド 説明 
git clone [url] リモートリポジトリをローカルリポジトリに複製する(ダウンロード) *urlは複製したいリモート先のurl

リモートリポジトリの変更をローカルに反映させる

コマンド 説明 
git fetch リモートリポジトリからローカルにあるリモートリポジトリのコピーに最新情報をダウンロードする
git merge ローカルブランチに反映する
git pull #fetchとmergeをまとめて実行できるコマンド

ブランチの作成・確認

コマンド 説明 
git branch ブランチの一覧を表示する
git branch [branch名] ブランチを作成する [branchname]の部分に、作成するブランチの名前を指定します
git checkout [branch名] ブランチ名を指定して切り替える
git checkout -b [branch名] ブランチの作成と切り替えをまとめて実行できるコマンド

ログの確認・操作

コマンド 説明 
git log コミットの履歴を確認する
git revert git reset [commit] ・HEAD^ で一つ前・コミットの識別番号で指定も可能
git status ファイルの追加/変更/削除の確認 

ristorante Piumaggio(リストランテ ピウマッジョ)|新宿

ristorante Piumaggio(リストランテ ピウマッジョ)|新宿

f:id:H_Nagisa:20190616232841j:plain

 

新宿駅中央東口より徒歩5分。ビル4階にある隠れ家イタリアン「ristorante Piumaggio(リストランテ ピウマッジョ)」。黒を基調にした調度品と、純白のクロスでシックにまとめられた店内は、日常から離れた「上質」を感じさせてくれます。フィレンツェのトラットリアで修業を積んだ三井シェフが腕を奮うオープンキッチンは、さながら劇場のよう。若きソムリエ・山中さんのあたたかな接客も心地よさにあふれています。店名が意味するのは「羽」。ゆったりと羽をのばして、気取らずに贅沢な時間を過ごすことができます。

 

 

f:id:H_Nagisa:20190616232911j:plain


パスタやリゾットなどのおなじみのイタリアンメニューをはじめ、地中海沿岸の魚介料理や北部のジビエなど、多彩なメニューは、イタリアを旅しているような気分になるほど。実力派のシェフによる、素材を活かしたイタリアの郷土料理を堪能することができます。

食材は、現地イタリアや、熊本あか毛和牛など国内のものを厳選して使用。自家製のパンやデザートにもイタリアの小麦粉が使われるほどのこだわりようです。料理に使われるエキストラバージンオリーブオイルは、肉料理ではトスカーナ産、魚料理ではシチリア産と、料理に合わせ使い分けられています。郷土料理というと素朴なイメージがありますが、給仕される一皿一皿、見た目にも美しく繊細で、目でも楽しむことができます。

人気のランチコース「前菜盛合せ、パスタ、お肉のメイン、デザート含む全6品ランチ!上質空間で愉しむ多彩なイタリア郷土料理!5,500円」では、本日のパスタのほか、魚、肉のメイン各一皿ずつなど、全6品をいただくことができます。

問い合わせ先

  • ristorante Piumaggio
  • 営業時間/11:30~15:00、17:00~23:00 土日祝/11:30~15:00、17:00~23:00
    定休日/月曜日
    席数/26席(個室1室)
    喫煙可否/全面禁煙
    TEL/03-5341-4575
    住所/東京都新宿区新宿3-6-2 栄ビル4階