はじめに
この記事は初めてwebサービスを作る人間のアウトプットも兼ねた備忘録です。その為、何か問題点があった場合は遠慮なく仰ってください。現時点はrails tutorialのアウトプットが中心です。一通り終わった後にいろいろな機能を追加していこうと思っております。
カスタムヘルパー
railsは多くの組み込み関数を使用している。(関数とは与えられた引数を元に何らかの処理を行いその結果を返すもの)この組み込み関数を自分で作ることができるがこのことをカスタムヘルパーという。
moduleApplicationHelperdeffull_title(page_title='')#とりあえずタイトルは空がデフォでprovideで指定したらいれるbase_title="Ruby on Rails Tutorial Sample App"ifpage_title.empty?#空のままだったらbase_titleを返すbase_titleelsepage_title+" | "+base_title#何か入ってたらpage_titleと縦棒をプラスして返すendendend
これがヘルパーです。ここで行っていることはそれぞれのページのレイアウトで使用している
<%= yield(:title) %> | Ruby on Rails Tutorial Sample App
においてprovideでタイトルが与えられていない場合はベースタイトルを返すようにするという処理です。
上のコードのままだとタイトルが与えられていない場合
| Ruby on Rails Tutorial Sample App
と出力されてしまい、変な縦棒が入ってしまいます。そこでヘルパーを通して出力します。
ヘルパーを通して出力するとなると以下のようになる。
<title><%= full_title(yield(:title)) %></title>
ちょっとテスト書き換えて
test"should get home"dogetstatic_pages_home_urlassert_response:successassert_select"title","#{@base_title}"#ここのHomeを消したend
テストして
5 tests, 9 assertions, 0 failures, 0 errors, 0 skips
おっけい
CSSの追加
<%= stylesheet_link_tag 'application', media: 'all',
'data-turbolinks-track': 'reload' %>
このコードはstylesheet_link_tagという組み込み関数をrailsAPI(外部で作られた機能を共有できるようにしたもの)を使い読み込んでいるのですがここにRubyの難解な概念が含まれています。
まず、そもそもメソッドを呼び込んでいるのですが引数をカッコで囲っていません。さらにmedia引数はハッシュのようですが波カッコで囲われていません。まず、この二つについて見ていきます。
まず引数についてですが実はRubyはカッコで囲わなくても因数はOKということです。
次に波括弧がないことについては引数の最後がハッシュである場合は波カッコで囲わなくても良いということです。
それで結局何をしているのかというとstylesheet_link_tagをapplication.cssを全てのファイルで読み込んでいます。なのでapplication.cssで変更を加えればアプリ全体で変更反映されます。
data-turbolinks-trackはよくわかりません、、、
Githubへのpushを改善
Githubでバージョン管理をしているわけなんですがpushするたびにユーザー名とパスワードを確認されるのがめんどいのでここで修正します。
これを行うにはまずGitで鍵の認証を行っておくことが必要になります。
原因
$ git remote -v
origin https://github.com/***/***.git (fetch)
origin https://github.com/***/***.git (push)
http通信になっていることがわかります。これをsshプロトコル通信にしなければなりません。
具体的な流れ
1.通信をsshに変える
$ git remote set-url origin git@github.com:
$ git remote -v
origin git@github.com: (fetch)
origin git@github.com: (push)
通信がhttpからgit@になったのがわかります。
2.リモートリポジトリのセット
$ git remote set-url origin git@github.com:***/***.git
$ git remote -v
origin git@github.com:***/***.git (fetch)
origin git@github.com:***/***.git (push)
これでおっけい