LoginSignup
1
1

More than 5 years have passed since last update.

書籍『Ruby on Rails 5 超入門』つまずきやすいポイントまとめ【Chapter6 最終回】

Last updated at Posted at 2017-04-29

関連記事

初心者の友人向けにはじめたシリーズですが、1冊無事に終わることができました。何事もちゃんとやりきると嬉しいですね(涙)

私の環境

  • Windows 10 Home 64bit
  • Ruby 2.2.6
  • Rails 5.0.2

つまずきやすいポイント

[p.434] RSSリーダー作成:Netの名前解決ができない

事象

書籍通りに作成すると次のエラーが発生します。

NameError (uninitialized constant AjaxController::Net)

原因

Netライブラリが読み込めていないため、エラーになっています。

解決方法

AjaxControllerの冒頭にrequireを追加してください。

class AjaxController < ApplicationController
    layout 'ajax'
    require 'net/http' # この一行を追加する
    # ... 省略 ...
end 

[p.434] RSSリーダー作成:パースエラーが発生する

事象

Yahoo!ニュースヘッドラインにアクセスすると、次のエラーが発生します。

アクセスするURL:

http://news.yahoo.co.jp/pickup/rss.xml

エラー内容:

REXML::ParseException (Missing end tag for 'meta' (got "head")

原因

Yahoo側の都合ですが、上記URLにアクセスすると、HTTPSにリダイレクトされています。リダイレクトしているので想定するコンテンツ(ニュース一覧)ではない、レスポンスが返ってきています。その結果、パースエラーが発生しました。

リダイレクト有無の確認方法

ブラウザのデバッグツールを起動(ChromeならF12キーを押下)して、改めてURLにアクセスしてみてください。次のようにリダイレクトされているのが確認できます。

[301] http://news.yahoo.co.jp/pickup/rss.xml

[200] https://news.yahoo.co.jp/pickup/rss.xml

https___news_yahoo_co_jp_pickup_rss_xml.jpg

プログラムでも確認できます。レスポンスの中身をコンソールに出力して確認してみてください。

    url = URI('http://queryfeed.net/twitter?q=%23ruby&title-type=user-name-both&geocode=')
    http = Net::HTTP.new(url.host)
    response = http.get(url)

    logger.debug response.inspect # デバッグ用に追加
    # <- #<Net::HTTPMovedPermanently 301 Redirect readbody=true>

解決方法

実用的なものを作るのであれば、「リダイレクト先を遡って、何回まで許容する」といった処理を追加する必要があります。

ただし、書籍の学習範囲から逸れてくるので、とりいそぎ解決したいのであれば、次の条件のシンプルなRSSフィード用のURLを探して設定してください。

  • リダイレクトしないもの。(いきなり200になる。)
  • HTTPSではなくHTTPのもの。
    • HTTPSのURLにいくにはまた別のコードを追加する必要になります。

例えば、QueryFeedからURLをとってくるとよいです。

(あくまで学習を急ぐ人用の解決方法なので、上記をどうやって解決できるか自分で調べてみるともっと勉強になると思います!)

[p.445] メソッド名末尾の「!」とは

deviseのログインチェックに「authenticate_account!」というメソッドを呼び出しています。末尾の「!」の意味は次の通り。

def xxx!
「!」はメソッド名の一部です。慣用的に、 同名の(! の無い)メソッドに比べてより破壊的な作用をもつメソッド(例: tr と tr!)で使われます。

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

今回の場合では、戻り値ではなく副作用として、accountというモデルの状態を変えてしまうのできっとついてるんですかね。

誤植

明らかなものは見つかりませんでした。(いや、当たり前なんですけど!)

最後に

無事に1冊終わりました。RubyやRailsに関わらず、Webアプリに関わったことがない人にも基礎から教えてくれる非常に素晴らしい本です。なので、ちょっとつまりそうかな、というところを、フォローさせて頂きました。友人向けに書き始めたものですが、これからはじめるどこかのだれかにも役に立ってくれると嬉しいなと思います。読んでいただいてありがとうございました。

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1