Railsのrequest.fullpath だと param 以降も受け取ってしまうので、paramの値を使わない時の方法。
解決策 splitで邪魔なものをとる方法
request.fullpath.split("?")[0] path を使う方法。こっちのほうがよさそう。
request.path 参考 [ruby on rails – request.fullpath with no parameters – Stack Overflow][1]
scope "api" do resources :entries end このコードをワンラインで、
scope "api" { resources :entries } とかくと動かないので、routes.rb は DSLなのでブロックの書き方に影響が出てるようです。何でこうしてるかの詳しい理由はよくわからない。
rails new したらbundle install が atomic の所でコケた。何か前も同じエラーに引っかかって結構検索した記憶があったんだけど今回も対処法を探すのに結構な時間がかかってしまった。
エラーメッセージはこんなの。
run bundle install Fetching gem metadata from https://rubygems.org/.......... Fetching gem metadata from https://rubygems.org/.. Resolving dependencies......... Installing rake (10.1.1) Installing i18n (0.6.9) Installing minitest (4.7.5) Installing multi_json (1.8.2) Installing atomic (1.1.14) Gem::Installer::ExtensionBuildError: ERROR: Failed to build gem native extension. /Users/ironsand/.rbenv/versions/2.0.0-p247/bin/ruby extconf.rb *** extconf.rb failed *** Could not create Makefile due to some reason, probably lack of necessary libraries and/or headers. Check the mkmf.log file for more details.
Zurb Foundationのトップバーの右上のメニューですが、デフォルトでは幅が940pxを切るとMenuに折りたたまれてしまうという結構広い設定になっています。
もうちょっと幅が狭くても出るようにしたかったので修正しました。
対策 設定ファイルを以下のように書き換えます。環境はRailsです。
// $topbar-breakpoint: 940 !default; // Change to 9999px for always mobile layout $topbar-breakpoint: emCalc(600px); ちなみに[Menu]自体がでなくて少し困ったのですがtoggle-topbar menu-icon を設定してなかったのが原因だったようです。
<ul class="title-area"> <li class="name"> <h1><%= link_to "Site Title", root_path %></a></h1> </li> <li class="toggle-topbar menu-icon"><a href="#"><span>Menu</span></a></li> </ul>
Railscasts のTwitter の項目通りに書いてると since_id parameter is invalid. のエラーでつまづきました。
どうやらTwitterAPI1.1からの変更で since_id に `` を指定できなくなったのが原因のようです。
もちろんレコードにすでにつぶやきが入ってれば問題ないんですが初回の何も入ってない時にこけてしまうわけです。
対策 user.twitter.list_timeline(list_id, since_id: [maximum(:tweet_id),"1"].max) と返り値に最低でも1が入るようにしておけばOKです。文字列にしてるのは twitter_idを文字列で保持してるからです。
参考 [API v1.1 statuses/user_timeline since_id parameter is invalid | Twitter Developers][1]
attr_accessibleはRails4では使えなくなったのにユーザー管理の定番 gem deviseではまだ使っているようなので新しい昨日の Strong parameter に書き換えておきましょう。
具体例 devise の設定で User モデルにこんなのが書いてると思うので
attr_accessible :email, :password, :password_confirmation その行を削除して下の方にこれを追加しましょう。
private def user_params params.require(:user).permit(:email, :password, :password_confirmation) end 参考 [attr_accessible][1]
何故だか理由はさっぱりわかりませんが、どうにもおかしな動きが route.rb をいくらいじってもなおらないので色々情報を探してたら、config の omniauth.rb を消したら動きました。
consumer_key とかは devise.rb に書いておきましょう。
参考 [ruby on rails 3 – Authentication failure : Devise + OmniAuth + Twitter – Stack Overflow][1]
https://github.com/mohitjain/social-login-in-rails
ここにあります。
devise と omniauthを組みわせて使うと default の email と encrypted_password が必ず値を持たなければならない null => false の制限が邪魔だったのでMigrationで削除しようとしたけど方法がわからなかったので調べてみた。
やりかた class RemoveConditionFromUser < ActiveRecord::Migration def change change_column :users, :email, :string, null: true change_column :users, :encrypted_password, :string, null: true end end 参考 [Rails Migration: Remove constraint – Stack Overflow][1]
Macの環境構築をやり直したので、入れてるgemの一覧を出してみました。
actionmailer (4.0.0) actionpack (4.0.0) activemodel (4.0.0) activerecord (4.0.0) activerecord-deprecated_finders (1.0.3) activesupport (4.0.0) addressable (2.3.5) arel (4.0.0) atomic (1.1.14) bigdecimal (1.2.0) buftok (0.2.0) builder (3.1.4) bundler (1.3.5) celluloid (0.15.2) chunky_png (1.2.8) coderay (1.1.0) compass (0.12.2) compass-normalize (1.4.3) compass-recipes (0.3.0) descendants_tracker (0.0.3) diff-lcs (1.2.5) equalizer (0.0.8) erubis (2.7.0) factory_girl (4.3.0) factory_girl_rails (4.3.0) faker (1.2.0) faraday (0.8.8) ffi (1.9.3) formatador (0.2.4) fssm (0.2.10) guard (2.2.4) guard-rspec (4.2.0) hike (1.2.3) http (0.5.0) http_parser.rb (0.