Deviseのルーティング制御方法
Railsでログイン機能をつける時にはDeviseを使う時が多いと思いますが、アプリケーションによっては、新規登録はサービス管理者側で行い、誰でも会員登録ができる状態を避けたい状況もあると思います。 そこで、今回はDeviseを使用して、サービスのview側ではログインしかできない状態を作っていきます。
Deviesの初期設定は下記のようになっています。
|Prefix |Verb |URI Pattern |Controller#Action | |---|---|---|---| |new_user_session |GET |/users/sign_in(.:format) |devise/sessions#new | |user_session |POST |/users/sign_in(.:format) |devise/sessions#create | |destroy_user_session |DELETE |/users/sign_out(.:format) |devise/sessions#destroy | |new_user_password |GET |/users/password/new(.:format) |devise/passwords#new | |edit_user_password |GET |/users/password/edit(.:format) |devise/passwords#edit | |user_password |PATCH |/users/password(.:format) |devise/passwords#update | |user_password |PUT |/users/password(.:format) |devise/passwords#update | |user_password |POST |/users/password(.:format) |devise/passwords#create | |cancel_user_registration |GET |/users/cancel(.:format) |devise/registrations#cancel | |new_user_registration |GET |/users/sign_up(.:format) |devise/registrations#new | |edit_user_registration |GET |/users/edit(.:format) |devise/registrations#edit | |user_registration |PATCH |/users(.:format) |devise/registrations#update | |user_registration |PUT |/users(.:format) |devise/registrations#update | |user_registration |DELETE |/users(.:format) |devise/registrations#destroy | |user_registration |POST |/users(.:format) |devise/registrations#create |
これをログインに必要な情報だけ残すようにします。
|Prefix |Verb |URI Pattern |Controller#Action | |---|---|---|---| |new_user_session |GET |/users/sign_in(.:format) |devise/sessions#new | |user_session |POST |/users/sign_in(.:format) |devise/sessions#create | |destroy_user_session |DELETE |/users/sign_out(.:format) |devise/sessions#destroy |
それにはroutes.rb
を編集していきます。
変更前
devise_for :users
変更後
devise_scope :user do get '/users/sign_in' => 'devise/sessions#new', as: :new_user_session post '/users/sign_in' => 'devise/sessions#create', as: :user_session delete '/users/sign_out' => 'devise/sessions#destroy', as: :destroy_user_session end
この部分で、Deviseのマッピングを行い、skipしてルーティングの設定は行わないようにしています。
devise_for :users, skip: :all
do以下で必要なルーティングだけ記述してあげれば完成です。
一点注意が必要になります。おそらくログアウト時にルーティングエラーが出ると思います。
これは、本来Deleteメソッドで呼ぶはずが、Getメソッドで呼んでしまっているのが原因です。
そこで、ログアウトのリンクを変更してあげます。具体的にはlink_to
からbutton_to
に変更する必要があります。
変更前
<%= link_to "ログアウト", destroy_user_session_path, method: :delete %>
変更後
<%= button_to "ログアウト", destroy_user_session_path, method: :delete, class: "nav-link waves-effect" %>
Unityの最新版をDLしたらAndroidビルドが出来なくなった
ビルドしようとするとUnable to list target platforms. Please make sure the android sdk path is correct. ... というメッセージが出てきて止まる
↓こんな感じ
まず、疑ったのがSDKのパスだがそこは問題なかった。
AndroidStudioを起動して確認済み
※確認方法
Configure>Project Default>Project Structure>Android SDK location:
同じような問題にぶつかっている人が解決方法を提示していてくれた
一部個人的に危惧していたのが、toolsフォルダを上書きしてしまうのは少し危険だと思ったので、自分はリネームしてtools_r25.2.5-windows.zipの中のtoolsを新規のものとして配置した。
いきなりビルドできなくなると焦るけれども、unityのフォーラムが優秀なので、そちらを参照すると解決する可能性が高い
UbuntuでChromeのインストールでハマったこと
Linuxをはじめて躓いたこと
Ubuntuだとデフォルトで、FireFoxが入ってはいるんですが、Chromeを今まで使ってきたので、今まで同じようにインストールしようとしたらできないという、まさかの事態に突入しました
WindowsやMacだとChromeのインストーラをDLして、「次へ(next)」をクリックして行けば終わるんですが、Ubuntuだと「インストール中」から進まずに、結果インストールできないという事態に陥ったので、Chromeのインストールまでにやったことをまとめます
1、依存するパッケージをインストール
自分はこれを行っていなかったために入りませんでした
「libappindicator1」が必要なパッケージです
sudo apt-get install libappindicator1
これで前準備が完了です
エラーが出る場合には、Chromeが中途半端に入っているかもしれないので、削除します
sudo apt-get remove google-chrome-stable
2、Chromeのインストーラをダウンロード
公式サイトからインストーラをダウンロード
https://www.google.co.jp/chrome/browser/desktop/
3、インストール
2でDLしたディレクトリに移動してコマンドを実行。
sudo dpkg -i ダウンロードしたインストーラ名.deb
エラーがでなければ完了
続けて
google-chrome
を入力すれば起動します
SlideShareにアップしたら文字が消えた
keynoteで作成したスライドのテキストがSlideShare上で消える
結論から言うとフォントの種類の問題だった
macにデフォルトで入っているヒラギノフォントを使っていたから表示できていなかった
対処法
1、keynote上ではスライドを作成せずに、画像として切り出したものを使用する
2、使用してもいいフォントを使う(把握仕切れていない)
フォントにこだわりがある人は1を使用するしかない。フォントにこだわりがない人は、下のURLからmigmix-1p-20150712.zipを選んで自分のPCにインストールすれば問題ない(自分はこれで対応した)
https://ja.osdn.net/projects/mix-mplus-ipa/releases/
ローカルサーバを他のPCで確認(共有)するには?
ローカルサーバの立て方
ローカルサーバを立てるには、xamppを使ったりといった方法があるが、
今回はコマンドとphpを使って行う。
※rubyでもpythonでも可能
ビルドインサーバの使用
ビルドインサーバを使用するには、phpのバージョンが5.4.0以上が必要になる。
ターミナルもしくはコマンドプロンプトで下記のコマンドを打ってみて、バージョンが古い場合にはアップデートしてください。
$ php -v
phpインストール方法
インストールが完了したら、下記のコマンドを実行してサーバが立ち上がるか試してみましょう
下記のようになったら、http://localhost:8000にアクセスして、表示できたら成功です。
$ php -S localhost:8000 PHP 7.0.12 Development Server started at Mon Feb 6 18:39:08 2017 Listening on http://localhost:8000 Document root is /Users/xxxxxx/Desktop/xxxxxx Press Ctrl-C to quit.
他の人にも共有する
localhostのままでは共有できないので、IPv4アドレスを使用します。
windowsの方はコマンドでipconfigとすると
のような画面が出てきます。使うのはIPv4アドレスと書かれている数値の部分です(xxx.xxx.xx.xxx)
macの方は、スタートメニュー → システム環境設定 → ネットワーク → Wi-Fi
の中にあるコンテンツ部分に記載されているIPアドレスを使用します。
先ほど、localhostと書いた部分をIPアドレスに置き換えます。
※サーバを止めるには、Ctrl + c で止まります
$ php -S 192.168.1.181:8000 PHP 7.0.12 Development Server started at Mon Feb 6 18:52:17 2017 Listening on http://192.168.1.181:8000 Document root is /Users/xxxxxx/Desktop/xxxxxx Press Ctrl-C to quit.
複数人でアクセス
Listening on http://192.168.1.181:8000
となっているURLにアクセスしてみて無事にアクセスできたら別の端末でも同じURLにアクセスしてみてください。
複数人でローカルサーバが見えるはずです。
※同じwifiもしくはルータをお使いください。そうしないとIPアドレスが合致しないためwebページが見れません(ローカルサーバを立てた人のみしか見れない)。