Rubyも随分読めるようになったので、Rubyの勉強は終了です。
何か、作ってみましょうか。
JavaエンジニアがRubyの勉強をしてみる。
2012年11月14日水曜日
2012年11月13日火曜日
16日目:Net::HTTP、超便利。
今日は軽めに。
他サービスアクセス、超楽ね。
さてそろそろRubyを使って何かアプリケーション作ろうかな。
勉強は一段落で、実践に入っていきます。
require("net/http")
Net::HTTP.start("google.com") do |http|
response = http.get("/")
p response.body
end
さてそろそろRubyを使って何かアプリケーション作ろうかな。
勉強は一段落で、実践に入っていきます。
2012年11月12日月曜日
15日目:テストコードを見てみる。
Rubyと言えばTDDでしょ!(?)
ということで、今日は先日作成したRailsのScaffoldで作ったテストコードを見てみます。
test/functional/users_controller_test.rb
中を見ると、最初のメソッドはこんな感じ
setupはJUnitのsetupと一緒なんでしょう。ですが、ん?なに「:one」って?
調べたところ、これは
test/fixtures/users.yml
の中に用意されているテストデータを読み取ってるそうです。便利。
次のメソッドは以下、
テストに説明(=should get index)を付けて、テストを実行しています。
indexにGetアクセスをして、レスポンスがsuccess(=200?)であることを確認しています。
その後にもたくさんのテストメソッドがありますね。
テストも簡単に書けるんですね。便利。
ということで、今日は先日作成したRailsのScaffoldで作ったテストコードを見てみます。
test/functional/users_controller_test.rb
中を見ると、最初のメソッドはこんな感じ
setup do
@user = users(:one)
end
setupはJUnitのsetupと一緒なんでしょう。ですが、ん?なに「:one」って?
調べたところ、これは
test/fixtures/users.yml
の中に用意されているテストデータを読み取ってるそうです。便利。
次のメソッドは以下、
test "should get index" do
get :index
assert_response :success
assert_not_nil assigns(:users)
end
テストに説明(=should get index)を付けて、テストを実行しています。
indexにGetアクセスをして、レスポンスがsuccess(=200?)であることを確認しています。
assert_not_nil assigns(:users)
は、viewで、@usersがnullでないことを確認しているものです。例えば、controllerで@users変数に値を入れていることをテストしています。その後にもたくさんのテストメソッドがありますね。
テストも簡単に書けるんですね。便利。
2012年11月11日日曜日
14日目:テスト、大事!
RailsのScaffoldを実行するとテストコードも一緒に出力されます。
Only in app2/Ins/test/fixtures: users.yml
Only in app2/Ins/test/functional: users_controller_test.rb
Only in app2/Ins/test/unit: helpers
Only in app2/Ins/test/unit: user_test.rb
Only in app2/Ins/test/functional: users_controller_test.rb
Only in app2/Ins/test/unit: helpers
Only in app2/Ins/test/unit: user_test.rb
今日はこのテストを勉強します。
users_controller_test.rbは「機能テスト」と言われるコードだそうです。
対して、user_test.rbは「単体テスト」と言われるコードだそうです。
まずはテストを実行します。
jruby test/functional/users_controller_test.rb
LoadError: no such file to load -- test_helper
require at org/jruby/RubyKernel.java:1019
require at /Applications/jruby-1.7.0/lib/ruby/shared/rubygems/custom_require.rb:36
(root) at test/functional/users_controller_test.rb:1
怒られる。。。調べてみると、-Itestパラメータをつけるらしい。
jruby -Itest test/functional/users_controller_test.rb
Run options:
# Running tests:
EEEEEEE
Finished tests in 0.243000s, 28.8066 tests/s, 0.0000 assertions/s.
1) Error:
test_should_create_user(UsersControllerTest):
ActiveRecord::StatementInvalid: ActiveRecord::JDBCError: query does not return ResultSet: PRAGMA table_info("users")
・・・・
一歩前進!しかしながら、テストがダメだって言われる。dbがないらしい。マイグレートしていないからか。
rake RAILS_ENV=test db:migrate
jruby -Itest test/functional/users_controller_test.rb
Run options:
# Running tests:
.......
Finished tests in 0.915000s, 7.6503 tests/s, 10.9290 assertions/s.
7 tests, 10 assertions, 0 failures, 0 errors, 0 skips
成功!
今日はここまで、次回はテストコードを読んでいきます。
2012年11月10日土曜日
13日目:Viewを見る。
先日作った、Rails Scaffoldでできたものを確認してます。
今日はViewを確認します。
ls app/view/users
_form.html.erb edit.html.erb index.html.erb new.html.erb show.html.erb
erbとはembedded Rubyの略で、JSPみたいにファイルをかけます。
JSPと同じく、
<% %>
の中にRubyスクリプトを書けて、
<%= %>
で、値を出力できます。
便利そうなのが、Railsがerb中にかけるように用意しているビューヘルパーというメソッドたちです。
例えば、index.html.erbに書かれている
<%= link_to 'Show', user %>
は、link_toというビューヘルパーを使っていて、ブラウザには以下のように出力されます。
<a href="/users/2">Show</a>
htmlを出力する処理は、Railsに必要なビューヘルパーが用意されていないかを確認しながら実装したほうがよさそうですね。
ビューヘルパーは自分で作ることもできるので、綺麗に実装できそうです。
でも、記法はEL式のほうがエレガントかな。
erbファイルはコントローラで出力するerbファイルを指定できますが、指定しない場合は
view/コントローラ名/メソッド名.html.erb
が呼ばれます。
Railsではレイアウトファイルが用意されていて、デフォルトではすべてのerbファイルは
app/view/layouts/application.html.erb
に組み込まれてブラウザに出力されます。
_が頭につくerbファイルは部分ビューで、他のerbファイルに組み込まれます。_form.html.erbはnew.html.erbの
<%= render 'form' %>
で読み込まれています。
ビューヘルパー、素敵そう。
今日はViewを確認します。
ls app/view/users
_form.html.erb edit.html.erb index.html.erb new.html.erb show.html.erb
erbとはembedded Rubyの略で、JSPみたいにファイルをかけます。
JSPと同じく、
<% %>
の中にRubyスクリプトを書けて、
<%= %>
で、値を出力できます。
便利そうなのが、Railsがerb中にかけるように用意しているビューヘルパーというメソッドたちです。
例えば、index.html.erbに書かれている
<%= link_to 'Show', user %>
は、link_toというビューヘルパーを使っていて、ブラウザには以下のように出力されます。
<a href="/users/2">Show</a>
htmlを出力する処理は、Railsに必要なビューヘルパーが用意されていないかを確認しながら実装したほうがよさそうですね。
ビューヘルパーは自分で作ることもできるので、綺麗に実装できそうです。
でも、記法はEL式のほうがエレガントかな。
erbファイルはコントローラで出力するerbファイルを指定できますが、指定しない場合は
view/コントローラ名/メソッド名.html.erb
が呼ばれます。
Railsではレイアウトファイルが用意されていて、デフォルトではすべてのerbファイルは
app/view/layouts/application.html.erb
に組み込まれてブラウザに出力されます。
_が頭につくerbファイルは部分ビューで、他のerbファイルに組み込まれます。_form.html.erbはnew.html.erbの
<%= render 'form' %>
で読み込まれています。
ビューヘルパー、素敵そう。
2012年11月9日金曜日
脇道にそれて。Xperia AXとVLの違い
ちょっと脇道にそれて、Xperia AXとVLのデザイン上の違いをご紹介。
Xperia AX/VLは、海外ではXperia Vと呼ばれるAndroidの日本バージョンで、AXはdocomo、VLはauから出ています。
同じXperia Vの日本バージョンなんですが、中に乗っているソフトウェアだけでなく、外見上もデザインが違います。
で、私見。
大きな違いを二点。
①AXには、ディスプレイ上部に要らないdocomo Xiロゴがある。VLはスッキリ。
②AXは下のほうに変なでっぱり。VLはスッキリ。
AXはカクカクっておしりが出っ張ってます。
VLは本体の長さ自体は変わらないんですが、でっぱりが斜めにカットされてて、スッキリ。
完全に私見、主観ではありますが、買うならXperia VLですねー。
Xperia AX/VLは、海外ではXperia Vと呼ばれるAndroidの日本バージョンで、AXはdocomo、VLはauから出ています。
同じXperia Vの日本バージョンなんですが、中に乗っているソフトウェアだけでなく、外見上もデザインが違います。
で、私見。
auのXperia VLのほうが、断然カッコいい。
ちょっとした違いなのに、かっこ良さは段違いです。大きな違いを二点。
①AXには、ディスプレイ上部に要らないdocomo Xiロゴがある。VLはスッキリ。
AXは、docomoの広告をいつも見ながらスマフォを操作してるようなものです。あくまで私見ですが、あまり気持ちのいいものじゃないなぁ。
対してVLは、すっきりした見た目。とてもいいです!②AXは下のほうに変なでっぱり。VLはスッキリ。
AXはカクカクっておしりが出っ張ってます。
VLは本体の長さ自体は変わらないんですが、でっぱりが斜めにカットされてて、スッキリ。
完全に私見、主観ではありますが、買うならXperia VLですねー。
12日目:動いてなかったScaffold
9日めの勉強で、
ActionView::Template::Error (application.css isn't precompiled):
というエラーが出た時の対応が間違っていたので、やり直し。
このエラーはcssとjavaScriptが生成されていないこと。
対応は二種類の方法があります。いずれかをすれば良いですが、②がおすすめ。
①動的に生成されるように設定
②予め生成(プリコンパイル、プレコンパイル?)しておく。
①動的に生成されるように設定
これでScaffoldで作られたアプリが動くようになります。
んー。難しい。
ActionView::Template::Error (application.css isn't precompiled):
というエラーが出た時の対応が間違っていたので、やり直し。
このエラーはcssとjavaScriptが生成されていないこと。
対応は二種類の方法があります。いずれかをすれば良いですが、②がおすすめ。
①動的に生成されるように設定
②予め生成(プリコンパイル、プレコンパイル?)しておく。
①動的に生成されるように設定
config/environments/production.rb
のL18行目あたりの以下の行を修正
# ↓ config.assets.compile = false
config.assets.compile = true
②予め生成しておく。
アプリケーションのルートで以下のコマンドを実行します。
bundle exec rake precompile RAILS_ENV=production
これでScaffoldで作られたアプリが動くようになります。
んー。難しい。
登録:
投稿 (Atom)

