2014年7月10日木曜日

git pushした後にcommit --amendしてpushしてみた

 コミット時のコメントを間違ってしまったのにpushしてしまって、amendしてもう一回pushしたらrejectされた。まぁ、当然ですよね。
~/work/awesome_events$git push
To https://github.com/xxx/awesome_events.git
 ! [rejected]        master -> master (non-fast-forward)
error: failed to push some refs to 'https://github.com/xxx/awesome_events.git'
hint: Updates were rejected because the tip of your current branch is behind
hint: its remote counterpart. Integrate the remote changes (e.g.
hint: 'git pull ...') before pushing again.
hint: See the 'Note about fast-forwards' in 'git push --help' for details.
~/work/awesome_events$gi pull
-bash: gi: command not found
~/work/awesome_events$git pull
Merge made by the 'recursive' strategy.
~/work/awesome_events$
別に何か対処した訳でもなく、あんたのブランチが古いからgit pullしてみろ、とヒントが書かれているので言う通り実行すると、 再帰的にマージしといたよというメッセージ。
 その後pushできましたが、誤ったコミット、修正後のコミット、そのときに自動で発生したマージ処理についてMerge branch 'master' of https://github.com/xxx/awesome_eventsというコメントとともにコミットが追加されていました。

 あぁ、こうなっちゃうのね。意図したこととは違ったけど、データが壊れていないのでよしとする。でも誤ったコメントが入ったままなのは今後なんとかしないと。

BABYMETAL その4

 えーっと、結局のところSU-METALというか中元すず香が好きなんじゃないかというところに思い当りまして。例えばBABYMETALが解散しても中元すず香が歌うならそれを見たいと思うだろうと思うのです。

 そこで、ファン歴2か月のにわか野郎がYoutubeから厳選して歌手活動の足跡を辿ってみたいと思います。主に自分のために。
 いきなり1~2曲目から目頭が熱くなり始めます。最後の方はさくら学院の卒業直前みたいですが、なんかね、当時を知らないけど無感情には見ていられないです。

 まずは9歳。まだ頑張ってレッスンを受けたとおりに上手に歌おうとしているように見えます。


 この時にはなんかもう開眼している感じ。誰かのアドバイスなのか本人の感性なのかわからないけど、上手さを取り違えて癖のある歌い方をしてしまう歌手の多い中でこれだけストレートな声を聴かせてくれる子は珍しい。すでに完成していて、現在のSU-METALとそう変わりません。幼いけど。


 次はアニメの主題歌を歌ったとき。これ素敵。セルフカバーしてほしい。武藤彩未さんとの再結成も歓迎します。
 動画が年代的に前後しているかもしれませんが、お許しを。


 このミュージカルでの歌唱は非常にレベル高い。震えます。ミュージカル女優なんていいんじゃないでしょうか。いや、やっぱり歌を聴かせるアイドルだな。岩崎宏美クラスかどうかはわからないけど、本格派と言っても差し支えないレベルでしょう。


 ほら、卒業式が近づいてきましたよ。この頃にはもうBABYMETALと同時進行始まってるのかな。


 さくら学院の卒業式。みんな泣いちゃってるからね。ずるいよね。泣くよね。


 さくら学院最後のヘドバンギャー!!。その後のライブを含めてもはじけっぷりは一番かもしれません。


 この辺りを踏まえての、BABYMETALです。というかSU-METALです。というか中元すず香です。
 ちなみに、YUIMETALとMOAMETALについては、最初この子たちいらないんじゃないの?というくらいから入った方が後々楽しめます。

 あー、やばいやばい。目から汗が。BABYMETALのおそらく長くはないであろう儚い活動期間を考えてもまた汗が。
 今はその後の未来を勝手に予想するのがとても楽しいです。武藤彩未さんとアイドル対決とか。さくら学院高等部を発足とか。ありそうで怖いんだけど、早めの結婚、引退とかでも伝説になりますね。うたのお姉さんとかも個人的にはありなんですけど。

2014年7月9日水曜日

記号・演算子の意味

 Railsのテキストに何の説明も無く知らない記号の論理演算子が出てきて困ります。&&とか||とか。
 また、わかる人にしかわからない書き方をしているサイトも多い中、下記はいろいろ参考になります。自分がわかる説明をしているページだけをGoogleが表示してくれればいいのに。検索ツールに難易度のパラメータも入れさせてほしい。

参考:
Rubyで使われる記号の意味(正規表現の複雑な記号は除く)

6-6 イベントの編集・削除機能を作る

 イベントの編集・削除機能とそれに関連するリンクを作成する。

  • イベント詳細ページに編集リンクを追加
  • 編集をクリックすると編集フォームに移る
  • 間違った入力にはエラーを表示する
  • 正しく入力されていると更新
  • イベント削除のリンクを追加
  • イベント作成者にだけ表示する
  • 削除をクリックすると確認ダイアログが出て、OKすると削除される

イベント編集機能を作る

まず編集ボタン。event/show.html.erbにp197の通り追記。
   <% if @event.created_by?(current_user) %>
   <% link_to 'イベントを編集する', edit_event_path(@event), class: 'btn btn-info btn-lg btn-block' %>
  <% end %>
 特に上の部分で、イベント作成者にのみ編集ボタンを表示させている。created_by?についてはEventクラスmodels/event.rbで定義する。
  def created_by?(user)
  return false unless user
  owner_id == user.owner_id
  end
 こんなのを追記しましたが、内容がイマイチわからない。
 returnの行でuserが空ならfalseを戻り値にして返す。
unless user
  return false
end
と同じ意味みたい。
 owner_id〜では、イベント作者のowner_idとログインユーザーのowner_idが同じかをチェックしている?演算子の説明とかちょっとだけしてほしい。辛い。

 EventsControllerにedit/updateアクションを追加。
  def edit
    @event = current_user.created_events.find(params[:id])
  end
  def update
    @event = current_user.created_events.find(params[:id])
    if @event.update(event_params)
      redirect_to @event, notice: '更新しました'
    else
      render :edit
    end
  end
 編集時に問題があると編集ページがリロードされちゃうのかな?

未完。

6-5 イベントの閲覧機能を作る

 今度は下記を実装。
  • イベント登録後、イベント詳細ページに移る
  • トップページに未開催のイベントを表示する
  • イベント一覧から詳細ページに移れる

イベント詳細ページの作成

before_action :authenticate, except: :show
def show
@event = Event.find(params[:id])
end
まずはこれだけEventコントローラに追加した。:idの入ったurlからこれを引数として持てこれる。ルーティングはresourcesでOKと。
 イベント詳細ページはログインしていなくても確認できるようにするため、before_actionにexcept: :showを追記してログイン状態をチェックしないようにしている。
 ビューにはイベント内容と、作成ユーザーを表示します。p193の通りファイル作成。
 models/event.rbに下記を追記。
  belongs_to :owner, class_name: 'User'
 ownerについては後で設定するらしい。だからきっとここでのhas_manyの
設定も後回し。
 これでイベント内容が表示されるというけど・・・あ、表示された。すごい。Twitterで使っているIDとプロフィール画像も表示された。なんか楽しい。
 それにしても、ビューを書くセンスってhtmlとcss知っていることが前提っぽいからつらいなー。そこもRubyも知らないのに、Railsって相当誤った選択じゃないか。進めた奴を恨むよ。

イベント一覧ページの作成

トップページにイベント一覧を表示させる。なんか久しぶりにトップページにきました。welcome/index.html.erbを下記の通り書き換え。
<div class="page-header">
  <h1>イベント一覧</h1>
</div>
<div class="list-group">
  <% @event.each do |event| %>
    <%= link_to(event, class: 'list-group-item') do %>
      <h4 class="list-group-item-heading">
        <%= event.name %>
      </h4>
      <p class="list-group-item-text">
        <%= event.start_time.strftime('%Y/&m/%d %H:%M') %> - <%= event.end_time.strftime('%Y/&m/%d %H:%M') %>
      </p>
    <% end %>
  <% end %>
</div>
 @eventについて未定義なので取得処理の実装をする。未開催のイベントを開催時間の昇順で取得する。設定はwelcomeコントローラ。
class WelcomeController < ApplicationController
  def index
  @event = Event.where('start_time > ?', Time.zone.now).order(:start_time)
  end
end
 whereとかorderとかってsqlのクエリでさーね。なんとなくわかるけど詳しい書式がわからん。

参考:

 こんなか。
 お、トップページに一覧が出た。BootStrapって便利そうだな。前にも書いたっけ。無いセンスでCSS一生懸命作るより、用意されたものを組み合わせる方が素人には嬉しいね。参考にできるサイトもたくさんありそう。

参考: