Linuxのお便利コマンドに触れてみたよ(その2)
オプション付きのコマンドなど、よく使うけどいちいちたたくのめんどくさい時、 自分の好きな名前でショートカットを登録してみよう。
よく使うls -la
コマンドをll
という名前で使えるようにしよう
laオプションを付ける事によって、.付きの隠しファイル含め、全てのファイルを表示してくれる。
よく使うからもっと楽に使いたい!
homeディレクトリ以下の.bashrcを開く
$ cd ~
$ vi .bashrc
.bashrc内にaliasを追加し、保存
alias ll='ls -la'
.bashrcを読み込む
$ source .bashrc
これでll
使えるようになったよ〜。
なんでデフォルトのコマンドが動いているかを探る(軽く)
デフォルトのコマンドのありかをチェック(サンプルとして lsコマンド)
$ which is ls
/bin/ls
どうやら、デフォルトコマンドlsは /bin以下にあるらしい。
このwhichコマンドも、各種ツール等のインストール先を調べれるのでお便利です。
結論として、ここにパスが通っているから、使えるらしい!
どうゆうこうと? 環境変数PATHの中身を見てみる
$ echo $PATH
いっぱいでてきた
/usr/local/git/bin:/opt/local/bin
:/opt/local/sbin
:/Users/kaori/.rbenv/shims:/usr/bin
:/bin
:/usr/sbin:/sbin:/usr/local/bin
:/opt/X11/bin
:/usr/local/git/bin
:/opt/local/bin
:/opt/local/sbin
:/Users/kaori/.rbenv/shims
:/Users/kaori/.rvm/bin
/binがあった! ということで、/binにパスが通っているのでlsコマンドが使えるらしい。ほほう!
Linuxのお便利コマンドに触れてみたよ
社内でLinuxのお勉強会があったので備忘録。
cd
, pwd
, ls
はよく使いますが、知らなかったのものを。
空のファイルを生成する
$ touch hoge.txt(ファイル名)
ファイルの中身を表示
$ cat ファイル名
文字列を出力する
$ echo hogehoge(出力したい文字列)
今どのサービスが立ち上がっているかプロセスを確認する ←これ結構便利!
$ ps aux | grep ruby(サービス名)
オプションのaux
を付ける事でより詳細な情報を表示しています。
(a: all process, u: 実行ユーザーつきで表示, x: 制御端末のないプロセスも表示します)
grepを付けないと膨大な量が表示されるので、確認したいサービスを|(パイプ)でつないであげると見やすいです。
私の場合は、Postres SQLを立ち上げて、exit
せずにターミナルをブチッと閉じてしまうことがよくありまして。いけないね。。
あわわと、再度Posgreを起動!postgres -D /usr/local/var/postgres
すると、エラーが出る。。
先ほどのpostgresプロセスが残っているぽい。ほんとかな、psコマンドで確認。
やっぱり残っていた。
kill コマンドでプロセスを殺すか、私はpostmaster.pidファイルを削除してしまっています。
rm /usr/local/var/postgres/postmaster.pid
もう一度、psコマンドを打って確認すると。。
終了してた!
また、自分が打っているgrep
コマンドを結果に出したくない場合は、更におしりに | grep -v grep を付けると出ません
(rmで削除した場合、30秒くらい待った方がいいです) なので、新たな気持ちで起動して下さい!
deviseの招待機能を使って、登録時に氏名も登録できるようにする
deviseを使って招待機能(Invitable)を使う際、招待メールの内のリンク先でデフォルトはPasswordのみを登録するのですが、氏名も一緒に登録させたいというお題が出たのでやってみた。
任意の項目を追加する場合は使える場合のお話です。
イメージ
1. rails cで招待したいemailを追加
User.invite!(email: "自分のEmail")
2. 招待メールが送信される(下記はletter openerを利用)
3. 「招待を承認する」からリンクした登録画面。
ここで入力した内容がuserテーブルのnameカラムへ登録される。
やったこと
1. devise, Invitableを使えるようにする
下記URLを参考に 1〜5. Controllerを作る、 7.routingを設定する まで進める
Railsで、deviseとdevise_invitableをつかって招待機能を実装する - Qiita
2. 氏名用のカラムを追加
rails generate migration AddColumnToUsers name:string
migrationファイルが作成され、問題なければmigration実行。
rake db:migrate
3. :name を許可するためにStrong Parametersを修正
これをしないとnameがスルーされて登録されない。
app/controllers/application_controller.rb
class ApplicationController < ActionController::Base before_action :configure_permitted_parameters, if: :devise_controller? protected def configure_permitted_parameters devise_parameter_sanitizer.for(:accept_invitation) << :name #招待を承認時用 devise_parameter_sanitizer.for(:account_update) << :name #アカウントの更新時用 end end
deviseのバージョンが4.0以上の場合はpermitを使った書き方ができるぽい!
class ApplicationController < ActionController::Base before_action :configure_permitted_parameters, if: :devise_controller? protected def configure_permitted_parameters devise_parameter_sanitizer.permit(:sign_up, keys: [:username]) end end
参考URL: https://github.com/plataformatec/devise#strong-parameters
4. viewを修正
name部分を追加
app/views/devise/invitations/edit.html.erb
<div class="login-area"> <%= image_tag "logo.png" %> <%= form_for resource, :as => resource_name, :url => invitation_path(resource_name), :html => { :method => :put } do |f| %> <%= devise_error_messages! %> <%= f.hidden_field :invitation_token %> <!-- この部分を追加 --> <div class="field"> <%= f.text_field :name, autofocus: true, autocomplete: "off", class: "form-control", placeholder: "氏名(本名)を入力してください" %> </div> <!-- ここまで --> <div class="field"> <br> <%= f.password_field :password, autofocus: true, autocomplete: "off", class: "form-control", placeholder: "NEW PASSWORD" %> </div> <div class="field"> <br> <%= f.password_field :password_confirmation, autocomplete: "off", class: "form-control", placeholder: "CONFIRM NEW PASSWORD" %> </div> <div class="actions"> <br> <%= f.submit t("devise.invitations.edit.submit_button"), class: "btn btn-info btn-block" %> </div> <% end %> </div>
5.(必要であれば)usersモデルにバリデーションを追加しておく
app/models/user.rb
class User < ActiveRecord::Base devise :invitable, :database_authenticatable, :recoverable, :rememberable, :trackable, :validatable --- 中略 --- validates :name, presence: true, length: { minimum: 2 } end
これで出来たよ!