神様は有休消化中です。

Unity関連の技術ネタを書いてます。

【Rails】Apache経由でInternal Server Error(500 Error)が発生して困った

環境

やりたいこと

  • ローカル環境で開発したRailsアプリをサーバーに入れて、Apache経由で使いたい
  • まだ作りかけのアプリなので、development環境で動作させる

やったこと

基本的にはコチラのサイトを参考に進めていく。

途中躓きながらもrails sever経由での接続までできて、いざApache経由で接続。

sudo vim /etc/httpd/conf/httpd.conf

NameVirtualHost *:80  #コメントされているので外す

<VirtualHost *:80> #ここから追加
    ServerName XXXX.XXXX.XXXX.XXXX # サーバーのIPアドレス
    DocumentRoot /home/user/testapp/public/
    <Directory "/home/user/testapp/public">
        Options -MultiViews
        AllowOverride All
        Order allow,deny
        Allow from all
    </Directory>
</VirtualHost> #ここまで
sudo service httpd restart

ブラウザからhttp://XXXX.XXXX.XXXX.XXXX/に接続

Internal Server Error

おぉ、マジか・・・。

調べてみると、どうやらPassengerではデフォルトでproductionモードで実行されるとのこと。
よく見れば /rails_root/log/production.log なるものが作られている。サイズは0。

developmentモードで実行するには、Apacheに設定が必要だそうで。
以下のように変更。

sudo vim /etc/httpd/conf/httpd.conf

NameVirtualHost *:80

<VirtualHost *:80>
    RailsEnv development # 追加!
    ServerName XXXX.XXXX.XXXX.XXXX
    DocumentRoot /home/user/testapp/public/
    <Directory "/home/user/testapp/public">
        Options -MultiViews
        AllowOverride All
        Order allow,deny
        Allow from all
    </Directory>
</VirtualHost>
sudo service httpd restart

ブラウザからhttp://XXXX.XXXX.XXXX.XXXX/に接続

無事表示できました。

というわけで、developmentモードでApache使うときはお気をつけて(常識か)

【Rails】feedzirraでRSSを取得してみる

feedzirraでRSSを取得してみる

feedzirraでRSSを取得しようとして、つまらないところでハマったのでメモ。

まずは、gemfileにfeedzirraを登録。
ネットで調べると以下のように登録するとのことで、追加。

vi Gemfile
gem 'feedzirra'

んで、いつもの

bandle install

config/application.rbに以下を追加

vi application.rb
class Application < Rails::Application
  config.autoload_paths += %W(#{config.root}/lib)
end

lib/tasks内に以下のファイルを作成。

vi update_feed.rb
class Tasks::UpdateFeed
 
  def self.getrss
    #RSSを取得する
    require 'feedzirra'
    url = ‘http://www.nextsoft.jp/feed/'
    feed = Feedzirra::Feed.fetch_and_parse(url)
  end

end

んで、実行!
・・・・すると以下のエラーが出てくる。なんじゃいこりゃ。

/Users/hoge/.rbenv/versions/2.0.0-p598/lib/ruby/gems/2.0.0/gems/feedzirra-0.8.0/lib/feedzirra.rb:2:in `<top (required)>': This project has been renamed Feedjira, find out more at feedjira.com. (RuntimeError)
from /Users/hoge/.rbenv/versions/2.0.0-p598/lib/ruby/gems/2.0.0/gems/bundler-1.7.12/lib/bundler/runtime.rb:76:in `require'
from /Users/hoge/.rbenv/versions/2.0.0-p598/lib/ruby/gems/2.0.0/gems/bundler-1.7.12/lib/bundler/runtime.rb:76:in `block (2 levels) in require'
・・・

読んでみると、どうやらfeedzirraの名前が変わってるっぽい。

This project has been renamed Feedjira, find out more at feedjira.com. 

うーん、feedjiraに変えればよろしいのか・・・?

以下のように試す。

vi Gemfile
gem 'feedjira'
bandle install
vi update_feed.rb
class Tasks::UpdateFeed
 
  def self.getrss
    #RSSを取得する
    require 'feedjira'
    url = ‘http://www.nextsoft.jp/feed/'
    feed = Feedjira::Feed.fetch_and_parse(url)
  end

end

うまくいった。
というわけで、feedzirraを使うときはfeedjiraと読み替えましょう。