GithubのContributions。。。。。
最近、毎日コミットしていますが、Githubでは表示されませんでした。。(たまに抜いたりした)
コミットの連続日数が結構原動力になっているが、なぜだろう。。
明日調べます。今は寝ます。。
Railsにおける、findとwhereの違い
show
とupdate
など、よく使われる.find
なんですが、最近.where
というメソッドの存在を知りました。
使ってみたら、.where
のほうが配列としてreturnしてくるが、.find
ならそうreturnしてこないらしい。。。。これで、複数のデータなら.where
、個別なら.find
でいいのかな?と思い、ネットで調べてみたら、違いはありました。。(今までの憶測はなんだろう=)
where
returns anActiveRecord::Relation
(not an array, even though it behaves much like one), which is a collection of model objects. If nothing matches the conditions, it simply returns an empty relation.find
(and its related dynamicfind_by_columnname
methods) returns a single model object, or possibly a collection of model objects in an Array (not a Relation). If nothing is found, anActiveRecord::RecordNotFound
exception is raised.
確かに、この場合だと、個別なら.find
の方が良いですよね。。ふーむ
Yauthについて笑
(※プログラミングに関係ないが、面白くて、ITの専門用語もたくさん出ているので、良い勉強になるかもしれません笑)
引用先:↓本当に面白かった笑
YAuthスペック : D-7 <altijd in beweging>
※※※※※※※※※※※※※※※※※※※※※※以下は転載内容※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※
Yauthとは"Yome(嫁) Auth"の事で主に男性が婚姻関係、もしくは親密な関係にある女性に対しての認証を得るために使われるプロトコルです。トランスポートレイヤーは電話やメールが使われる事が多いですが、スペック上の規定は特になく、プラッガブルな実装を可能にしています。
プロトコルに参加するのはPeer (同僚・友達)、Client (認証を得たい人物), End Point (嫁)の三者です。プロトコルが発動する前に、PeerよりClientにProbe (お誘い)メッセージが送信されます。この時点ですでにキャッシュされたEnd PointよりのレスポンスをClientが持っている場合はただちにClientからPeerへ返答が返ります。
キャッシュされたレスポンスがない場合はClientよりEnd Pointに実装依存のトランスポートレイヤーに乗せてクエリーが投げられます。書式はYAuth スペック1.0では
AUTH $reason
で、$reasonは省略可能ですが、End Pointの実装によっては$reason無しでは認証が絶対に下りないようになっている場合もあるので、なるたけ省略しないほうがよいでしょう。
これに対してEnd Pointは非同期でレスポンスを返してきます。現在定義されているステータスコードは以下の通りです:
YAuth 200 - 認証成功 YAuth 201 - 認証は成功したが、End Pointがよそに愛人を作成した (bulkneets) YAuth 202 - 認証は成功したが、本文内容は「勝手にすれば?(次回の認証は失敗する可能性が高い) 」 (Yappo) YAuth 204 - 認証は成功したが、無言(次回の認証は失敗する可能性が高い) YAuth 300 - 無効。選択肢が複数存在する。例:1. 大人しく帰ってきて無傷、2. 後で見返りを提示する、3. あとで半殺し (zigorou) YAuth 302 - 無効。成功とも失敗とも言えない。 YAuth 305 - 無効。第三者の仲介を必要とします。(bulkneets) YAuth 400 - 認証失敗(そもそも認証という行為を否定)。End Pointが鬼嫁だった場合等 (Yappo) YAuth 401 - 認証失敗。愛人への認証を嫁に出していませんか?(Yappo) YAuth 402 - 認証は一応成功だが、後で罰金、もしくはプレゼントをEnd Pointに渡さないとretroactiveに認証拒否。(daiba / otsune) YAuth 403 - 認証失敗。 YAuth 404 - 認証失敗が続いたため、End Pointが実家に帰った、等 YAuth 406 - 認証失敗。着信拒否されました(Yappo) YAuth 409 - 認証失敗。End Pointは現在間男に夢中 (tokuhirom) もしくはホストクラブに夢中 (daiba) YAuth 410 - 無効。End Pointは知らない間にいなくなった (acotie) YAuth 411 - 認証失敗。いつまでに帰ってくるか明示しなさい (zigorou) YAuth 412 - 認証失敗。そもそも彼女も嫁もいません。 YAuth 413 - 無効。あうぅ。こんなおっきなりくえすとはいらないよぉ・・・(Yappo) YAuth 414 - 無効。あうぅ。こんなおっきなURIはいらないよぉ・・・(Yappo) YAuth 423 - 認証失敗。クレジットカードがロックされました (Yappo) 実装はWebDAV経由での操作の場合のみ。 YAuth 500 - 認証失敗。なお、家に入れない可能性が高い。 YAuth 502 - 認証失敗。認証方法がよくありません。セックス中に再度認証してみてください (Yappo) YAuth 507 - 認証失敗。あんた今そんなにお金持ってないんだから許せるわけないでしょ! (zigorou)
実装依存のステータスは以下の通り
YAuth 456 - Zigorou (456) 版にのみ実装。嫁が押し入れにitkzを飼い出す (Yappo)
なお現在Experimentalステータスで出されているRFCにはクレジットカード等のログから認証の必要性が後から露見し(「ちょ、この『ラブマーケット』ってなんのお店よ!」「ち、ちがう、それはただのスナック・・・ぷぎゃー><」)、その時点で認証を行うDelayed YAuth等のバリエーションが存在する。
※※※※※※※※※※※※※※※※※※※※※※※※以上は転載内容※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※
最後のitkzなんですが、エンジニアの糸柳和法さんらしいです。笑↓
糸柳和法とは (イトヤナギカズノリとは) [単語記事] - ニコニコ大百科
面白かった面白かった。笑
RailsTutorial第六章前半のRspec
昨夜第五章のRspecを簡約化し、早速第六章に進もうと思ってやってみたら、またもエラーが出ました。。。(うぅ、Rails4対応ではないですかよ〜
Ruby on Rails チュートリアル:実例を使って Rails を学ぼう
具体的には、6.2.1のところに、テスト用dbでテストを行うために、テストdbを起動することが必要になっています。Tutorialには
$ rake test:prepare
と書いており、しかしそのまま実行してみたら、下記のエラーが出ました。
rake aborted! Don't know how to build task 'test:prepare' (See full trace by running task with --trace)
調べてみたら、rails4.1でdeprecateされたようです 。
rpsec - RSpecでテストデータベースの準備 - Qiita
このサイトを参考して、Rails4.1では下記のコードを実行しないと解消されないらしい。。
bundle exec rake db:migrate RAILS_ENV=test
これでテスト通れました。めでたしめでたし〜
補足:
上記の参考サイトを読んだらわかると思いますが、最少に
bundle exec rake db:create:all
これを執行すれば、developer, test, productionのdbを起動するので、はまらないと思います。
ではでは〜
RailsTutorial第五章のRspec
詰まったところ。。(学習メモ)
RailsTutorialはRails4対応になっているはずですが、
ちょこちょこエラーが起こりますので記録します。
Ruby on Rails チュートリアル:実例を使って Rails を学ぼう
第五章の「Rspecを洗練される」のところ、Tutorialの通りにやっても以下のエラーが出ます。
undefined method "full_title" for # <RSpec::Core::ExampleGroup::Nested_1::Nested_1::Nested_1:0x007ff1d94ac8b0>
どうやら、full_title
のメソッドが見つからないらしい。
でもTutorialの通りにやっていますし、一緒にTutorialをやっていて、先に進んだ友人のコードも見せてもらいましたが、全く同じ(汗。。。。
しかたがなく、ググってみたら、下記のアドバイスがありました。↓
spec/requests/static_pages_spec.rb
にinclude ApplicationHelper
を入れれば解決。
Helperの部分を自動的に読み込んでくれないらしいね。。。(Guardに関係しているらしいが、、)
これでテスト通れました。
久しぶりの更新。。。
Rubyの勉強
Rubyの参考サイト&課題
プログラミング入門 - Rubyを使って -, by Chris Pine, 日本語ver. by S. Nishiyama
↑こちらのサイトで勉強しました〜確かに琉球大学のkono先生のサイトで、基礎としてとても良いサイトです〜
Rubyの固有メソッドについての解説が少ない気がしますが、Class
, method
, Proc
など、Rubyの基礎構造について詳しく説明してくれます。
動画付きのRuby講座↓(こちらもわかりやすい♬)
Ruby入門 (全23回) - プログラミングならドットインストール
Ruby課題の回答
演習問題の要求は少し曖昧で、たぶん人によるソースコードとその出力も違うと思います。でも、自分が思った通りに結果が出力してくれれば良いのだろう〜笑
一応、僕のコードはこちらです。↓
ChonMeng-WONG/fjord-ruby · GitHub
拙いコードですみません。。。
皆さんにわかりやすくするために、ソースコードは、ほぼ行ごとにコメントを書いていますので、
よければ参考してください。
※ちなみに、個人的には、返り値&Proc
の辺が難しいと思います。。。。
Rspecについて
主に参考したサイト
Rubyist Magazine - スはスペックのス 【第 1 回】 RSpec の概要と、RSpec on Rails (モデル編)
なぜ手動ではなく自動テストが良いの?という疑問を持っている方がこちら↓のサイトを読んでおいたほうが良いのだろう。
一応、書いてみた。
ChonMeng-WONG/fjord-RSpec · GitHub
Class
やMethod
を使ったのは第八章以降になるんので、、、
でもこちらもあまり詳しくなく、苦戦しましたので、あまり説明とかはできません。。。(うぅ。)
そしてすべてのRubyファイルもテストできるわけではありません。puts "Hello World!"
だけのファイルは、本当にHello World!
が出力されるかどうか、テストできません。
この説明し方が良いかどうかわかりませんが、テストをするのに、puts "Hello World!"
みたいなコードより、Class
やMethod
を使って範囲を囲んであげてからできるようになります。
※そもそも、puts
だけだったら返り値がnil
でなにも返してこないんですが。。。
今はRailsについて勉強していますが、始めたばかりでブログに何を書けば良いのかわからなくて、詰まったところや気になるところがあったら更新します〜〜〜
あっ、このサイト↓で勉強しています〜たぶんRails学習者の定番サイトかな笑
Ruby on Rails チュートリアル:実例を使って Rails を学ぼう
ではではZzzzzzz
Github-clone時について
一回目のgithubにgit clone
する時、http式とssh式があります。
今回はssh方式でやってみましたが、ssh-keyの生成からgitへgit clone
までやりました。
Generating SSH Keys · GitHub Help
しかし、最後のところに
というエラーが出ました。sshでgithubに接続は成功しましたが、何らかの理由でpushはできませんでした。調べてみたら、clone時はsshのリンクをhttpのリンクにしてしまったからです。
もう一回remote
しても、remote already finished
というメッセージが出ました。
ここで、httpのリンク→sshリンクに変更する方法は、.git/config
を開き、その中には
[remote "origin"] url = https://github.com/jinkojima/hogehoge.git
があります。この文を
[remote "origin"] url = ssh://git@github.com/jinkojima/hogehoge.git
これに変更すれば、push
を成功になります。
まぁ、、最初にsshとhttpを間違わなければ済むことなんですが、間違っても修正することができます。新たにリポジトリを作成しなくても♬