先日Twitter APIを利用したWebアプリケーションを作成しました。 今回はこのWebアプリケーションを作成した際に発生したエラーを時系列に記載していきます。
言語・環境 見出しへのリンク
Ruby
Rails
Twitter api
postgresql
heroku
sqlite3 がインストールできなくて失敗する 見出しへのリンク
最終的にはpostgresqlを利用したのですが、sqlite3をバージョン指定でインストール時にもエラー発生したので備忘として。
sqlite3をバージョン指定でインストール sudo gem install sqlite3 -v ‘1.3.13’ — –with-sqlite3-lib=/usr/lib インストール時と同じパラメータを設定 bundle config build.sqlite3 –with-sqlite3-lib=/usr/lib 再度実施 bundle install –path vendor/bundle
成功
ただherokuで利用できるpostgresqlを使用したかったので、homebrewにてpostgresqlをインストール
postgresqlインストール時発生したエラー 見出しへのリンク
postgresqlインストール
brew install postgresql
インストール状況確認
brew list
ls -l /usr/local/Cellar/
postgresqlバージョン確認
psql –version
postgresql初期化
initdb /usr/local/var/postgres -E utf8
postgresql基本コマンド
スタート
brew services start postgresql
ストップ
brew services stop postgresql
リスタート(再起動)
brew services restart postgresql
postgresqlをインストールしたのでGemfile にも
gem ‘pg’
を追記してbundle installをしたところ、
Can’t find the PostgreSQL client library (libpq)
An error occurred while installing pg (1.1.3), and Bundler cannot continue.
Make sure that `gem install pg -v ‘1.1.3’ –source ‘https://rubygems.org/’` succeeds before bundling.
でインストールできず。
色々試行錯誤した上、以下コマンドでインストール自体はできた。
env ARCHFLAGS=”-arch x86_64″ gem install pg
sudo ARCHFLAGS=”-arch x86_64″ bundle install –path vendor/bundle
DBサーバー起動後開発ユーザー作成
createuser ユーザー名
psql -q -c’select * from pg_user’ postgres
database.ymlの内容でデータベースを作成
rake db:create
migrationを実行
rake db:migrate
database確認
psql -l
Railsアプリ作成 見出しへのリンク
アプリ作成
rails new tipran
コントローラー作成
rails g controller home
html作成
top.html.erb
と
routes.rb作成
他セッションやTweetのタイムラインコントローラー作成した
Twitter API利用するため 見出しへのリンク
以下別記事でまとめています。
【大枠まとめ】Ruby on Rails で TwitterAPI を利用したアプリを作る
なおSECRET_KEY_BASE や、Twitter API KeyとTwitter API Secret Keyは知られたらまずい値なのでdotenvを使う。
gem ‘dotenv-rails’
ローカルサーバー起動 見出しへのリンク
ローカルサーバー起動
rails s
topページは開いた
ただ
OAuth::Unauthorized
403 Forbidden
でエラー発生
Twitterの仕様変更で、Twitter Appsの設定 Callback URLがオンになっていた。
App detailsのCallback URLに
https://127.0.0.1:3000/auth/twitter/callback
https://localhost:3000/auth/twitter/callback
を設定したら直った。
ただ次は「rails s」コマンドを入力したら
「Your Ruby version is 2.3.7, but your Gemfile specified 2.4.1」
と表示されてローカルで動作確認できなくなった。
一時対応として「bundle exec rails server」を入力して解消した。
本番環境でリリースする際は、本番の callback url を設定する必要あり。
アプリ作成してテストしたら次はデプロイ
デプロイ 見出しへのリンク
herokuを利用しました。
herokuではまず環境変数設定した。
secret_key_base はランダム文字列セット
heroku config:add secret_key_base=”$(bundle exec rake secret)”
heroku config:add twitter_consumer_key=”xxxxxxxxxxxxxxxxxxxxx”
heroku config:add twitter_consumer_secret=”xxxxxxxxxxxxxxxxxxxxx”
git push heroku master
画像が読み込まれてない場合。
bundle exec rake assets:precompile
コンパイルされた新しい画像ファイル名を定義する。
てか
config.assets.compile = false
をtrueにすればよい。
以上