雑多なブログ

雑多なブログです。日常の思考とプログラミングについて。

RailsにてHTTPのステータスコードを指定する方法

RailsにてHTTPのステータスコードを指定する方法

例えば、コントローラー内で明示的に返したいステータスを指定したい時などに使用します。

こちらのgithubに、各HTTPステータスに対して割り当てられているRailsのシンボルが一覧で記載されています。

HTTP status code symbols for Rails · GitHub

使用例

controller内の条件分岐により、 処理が成功した場合は201 処理が失敗した場合は422 のHTTPステータスコードを返す例を記します。

(中略)
    respond_to do |format|
      if @picture.save
        format.html { redirect_to [@task, :picture], notice: "写真が作成されました。" }
        format.json { render :show, status: :created }
      else
        format.html { render :new }
        format.json { render json: @picture.errors, status: :unprocessable_entity }
      end
    end
(中略)

Rubyの基礎知識を復習

今日は忘れがちなrubyの基礎的記法について復習になります。  

あるオブジェクトを文字列に変換するto_sメソッド

■文字列→文字列

'1'.to_s # => "1"

■数値→文字列

1.to_s # => "1"

nil→空白の文字列

nil.to_s # => ""

■真偽値true→文字列の"true"

true.to_s # => "true"

■真偽値のfalse→文字列の"false"

false.to_s # => "false"

 

メソッドの呼び出し方

■通常の書き方

オブジェクト.メソッド(引数1, 引数2, 引数3)

■カッコを省略しても良い

オブジェクト.メソッド 引数1, 引数2, 引数3

■引数がない場合

オブジェクト.メソッド

 

変数名の作り方

■変数名はスネークケースが望ましい

first_name = user.first_name

■キャメルケースは慣習的に使用しない

firsfName = user.first_name

■数字から始まる変数はエラーになり使用できない

2_discount_price = 200

 

文字列について

シングルクオート('')を使用しても、ダブルクオートを使用しても("")文字列を表現することができる。 使い分けとしては、基本的にはシングルクオートを使い、式展開する場合はダブルクオートを使用する

■文字列

'これは文字列' "これは文字列"

■式展開する場合

i = '文字列' "これは#{i}" # => これは文字列

 

■論理演算子||と&&

&&はANDの論理演算

条件1も条件2も真であれば真、それ以外は偽となる

条件1 && 条件2

t1 = true

t2 = true

f1 = false

t1 && t2 # => true

t1 && f1 # => false

 

■||はORの論理演算

条件1も条件2のいずれかが真であれば真、両方偽であれば偽となる 条件1 || 条件2

t1 = true

t2 = true

f1 = false

f2 = false

t1 || t2 # => true

t1 || f1 # => true

f1 || f2 # => false

 

?で終わるメソッド

?で終わるメソッドは慣習的に真偽値を返すメソッドになります。

■空文字列であればtrue、文字が入っていればfalseを返すempty?メソッド

''.empty? # => true

'あいうえお'.empty? # => false

 

 以上になります。

 

それではまた。

 

 

 

【Rails】flashメッセージを使い倒す

flashメッセージの概要

Webサービスにおいて、自分が行なった操作により裏側でどういった処理が行われているかはユーザーは知る事ができません。

例えばユーザー登録を行うページにてきちんとアカウント情報を入力して登録ボタンを押したとしても、本当に”ユーザー登録が行われた”という情報がなければ、心配になると思います。

そこで何か処理を行なった時に、”正しく処理が行われましたよ”という情報を表示させるrailsの機能がflashメッセージになります。

具体的に

Webサービスにて何かの処理を行なった際に、それが正しく行われたかをユーザー側で確認できるよう、メッセージで表示させるための機能。

例えば、 ・ユーザーの新規登録に成功しました ・ログインに成功しました ・コメント投稿に失敗しました などのメッセージを表示させることでユーザーが状況を知る事ができます。

使い方(実装の仕方)

①まず、コントローラ側で行なっている処理に対してflashメッセージを追加します。

書き方の例は

flash[:notice] = "ユーザーの新規登録に成功しました"
flash[:success] = "ログインに成功しました"
flash[:danger] = "コメント投稿に失敗しました"

flashメッセージはハッシュであるので、keyとvalueを設定します。

上の一行目の例で言うと、:noticeがkeyで、"ユーザーの新規登録に成功しました"がvalueになります。

以下参照コード

class UsersController < ApplicationController

  def create
    @user = User.new(user_params)
    if @user.save
      redirect_to root_path, success: '登録ができました'
    else
      flash.now[:danger] = "登録に失敗しました"
      render :new
    end
  end

  private
  def user_params
    params.require(:user).permit(:name, :email, :password, :password_confirmation)
  end
end

ここで出てきた ・flash.now についてですが、「now」をつけた場合、移動した次のページのみメッセージが表示されるようになり、その次のページでは表示されない仕組みになります。 逆に「now」をつけない場合はずっとメッセージが残り続けます。

②ビュー側でこのメッセージを表示できるようにコードを書く。 <%= flash[:notice] %> <%= flash[:success] %> <%= flash[:danger] %>

メッセージを表示させる時間を指定する

メッセージを表示させる時間を指定するにはjQueryを使用すれば実現できます。

jQueryとは、javascriptフレームワークのひとつで、javascriptを簡単に使えるようにしたものです。

このjQueryを使ってアラートメッセージが5秒で消えるような仕様を作成していきます。

jQueryのgemを導入する Gemfileに以下のgemを追加する

gem "jquery-rails"

gemを追記したら

$ bundle install

を行いましょう。 ※gemを追記した際、サーバーを起動していた場合、一度サーバー再起動しないとgemは反映されません。

jQueryを使う宣言をする

//= require jquery

これで、jqueryを使う準備ができました。

③適用させたいビューにjQueryスクリプトを追記する 今回はapplication内で共通して使用したいため、application.html.erbに以下のコードを追記します。

<script>
  $(function(){
    $(".alert").fadeOut(5000);
  });
</script>

5000と指定している部分は5秒の指定になります。1.5秒かけてアラートを消したい場合は1500と指定します。

これで完了です! 表示をさせたい時間や位置をいじって好みのflashメッセージを作り上げてみてください!

参考

・redirect_to使った時にBootstrap対応のフラッシュメッセージを表示させる

・Bootstrapに対応したflashメッセージを出力する

・flashとflash.nowの違いを検証してみた

・jQuery日本語リファレンス

【初心者向け】GithubにSSH鍵登録

はじめに

<本記事の対象者>

・リモートリポジトリにGithub、開発環境にCloud9を使用している方 ・GithubSSH鍵登録ができなくて先に進めなくて困ってる方 に向け、引っかかってしまいやすい部分について書き記したものになります。

<前提条件> ・Githubの登録は済んでいる ・Githubリポジトリ(リモートリポジトリのこと)を作成している

さっそく登録していこう!

流れとしては ①Cloud9にて公開鍵を作成 ②Github上で設定から①で作成した鍵を登録 ③Githubへ接続ができるか確認 となります。

①まずはCloud9で公開鍵を作成します。

ターミナルにて

$ cd ~/.ssh
$ ssh-keygen

と入力すると以下のように聞かれますがここは入力せず全てEnterでかまいません。

Enter file in which to save the key(/home/ec2-user/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:

Github上で設定から①で作成した鍵を登録

次に、Githubのssh設定からSSH鍵の登録を行います。 SSH鍵設定画面 右上の「New SSH Key」から鍵の登録を行います。

SSH鍵登録画面 ここでのポイント ・「Title」はなんでもいい。 分かりやすく「名前_ssh_pub」なんかにしてみてもいいかと思います。 ・「Key」に先ほど作成した公開鍵をコピーしてきて貼り付ける。 貼り付ける部分は「ssh-rsa」から最後の「@cloud9.amazon.com」までとなります。

そして「Add SSH Key」を押下して作成完了です!

登録が完了したら以下の画面になります。 SSH鍵が登録された画像

登録ボタンを押した後「Key is Invalid. You must supply in OpenSSH public key format」と表示された場合

SSH鍵が無効と言われた場合

上記画像の通り警告が出た方へ。このエラーは日本語訳すると、「鍵が無効です。OpenSSH公開鍵形式で提供する必要があります。」と言う意味になります。

これはつまり”鍵の形式が正しくない”ことが原因です。

もう一度鍵の入力画面をみてみると、以下のような注意書きがありました。 SSH鍵登録の注意点

改めて登録しようとしたSSH鍵の文字を確認してみてください。登録する部分は ssh-rsa」から最後の「@cloud9.amazon.com」まで です。この範囲が公開鍵の「内容」となりますのでただしくコピーしてから貼り付けましょう!

最後にGithubに接続できるか確認

鍵が登録できたら、Githubに接続できるか確認をしましょう。

$ ssh -T git@github.com

を入力します。

Are you sure you want to continue connecting (yes/no)?

と聞かれるのでyesと答えましょう。

その後次のように表示されたら接続は完了です! お疲れ様でした。

Hi (アカウント名) You've successfully authenticated, but Github does not provide shell access.

Gitの理解/Githubの初pushまで

Git初心者へ

この記事ではGit/Githubを最低限の範囲で使えるようになるまでを簡単にまとめています。

対象者としては ・GitやGitHubを使ったことがない完全初心者 ・Gitを理解して使いこなせるようになりたいが長い記事は読みたくないという方

完全初心者の方の参考になればと思います。(自分の備忘録も兼ねて)

gitについて

プログラミングをしていると間違えて編集してしまったり消したらいけないコードを消してしまったりすることがあると思います。 簡単な手直しなら手作業でやり直せばいいかもしれませんが、ファイルが沢山あり編集箇所がわからなくなる場合には対処のしようがありませんね。

そんなときにgitを使ってソースコードを管理していると楽になります!

gitを使用することで、 ・ファイルのバージョンを管理でき、過去のファイルに戻すことができる ・複数人でのファイルの変更を滞りなく行うことができる などのメリットがあります。

gitは分散型バージョン管理システムのひとつ。

分散型とは何なのか。

調べてみると、Wikipediaには以下のように書かれていました。

分散型(ぶんさんがた)とは、複数のコンピュータなどに分散して機能を持たせること、またはそれで一つの機能を動作させる考え方。集中型の反対の意味として用いられる。

噛み砕いて説明すると、 "開発者がそれぞれ作業スペース(リポジトリ)を持っていて、分担して作業ができる形式" というシステムです。

※分散型バージョン管理システムの反対として集中型バージョン管理システム(例:SVN)がありますが、こちらは開発するシステムに対しリポジトリが1つです。集中型のリポジトリは中央リポジトリと呼ばれ、ここからソースコードを持ってきて編集し、編集後中央リポジトリに反映させる形式になります。

分散型について詳しく知りたい場合はこちら↓ ガチで5分で分かる分散型バージョン管理システム

ここまでの説明をまとめるとgitは、 ・作業スペースを開発者それぞれが持ち ・ファイルのバージョンを管理することができる システムのことです。

これだけは覚えておこう

ファイルを管理する場所の名前

・作業ディレクトリ ・ステージングエリア(WorkSpaceともいう) ・ローカルリポジトリ ・リモートリポジトリ

ファイルを登録する流れ

①作業ディレクトリからステージングエリアにファイルを追加する ↓ ②ステージングエリアからローカルリポジトリにファイルをあげる ↓ ③ローカルリポジトリからリモートリポジトリに登録する

以下、語句の説明

・作業ディレクトリ これは自分がコードを書いているそのファイルがある場所のことです。何にも関与していないただのディレクトリの場所のことです。

・ステージングエリア(WorkSpace) これはgitを用いて管理するための最初の場所になります。

・ローカルリポジトリ 開発者自身が自分のPCに用意することができる場所のこと。 普段の開発はローカルで行い、その変更を後悔したい場合はリモートリポジトリに登録(push)するという流れになります。

・リモートリポジトリはクラウドサーバーに存在していて、複数人で共有することができる場所のこと。GithubやBitbucketなどのサービスが有名です。

リポジトリとは ファイルやディレクトリの状態を記録し、変更履歴を管理することができる場所のこと。わかりやすく言うと、ファイルを入れておく箱のようなもの。

以上で基礎的に押さえておくべき知識は揃ったかと思います。 以下では実際にコマンドを使ってGitHubへファイルをあげるところまで行なっていきます。

コマンドを使いGitHubに登録するまでの流れ

セットアップ

まずは現在作業をしているディレクトリをgitで管理できるようにするためのセットアップを行います。このコマンドは管理したいディレクトリごとに初めの一回だけで大丈夫です。

$ git init

①作業ディレクトリ→ステージングエリア

次は上で述べた"①作業ディレクトリからステージングエリアにファイルをあげる"部分を行います。 ひとつずつファイルをaddしたいときは以下のコマンドを打ちます。

/*ファイルをひとつずつあげたい場合*/
$ git add ファイル名

/*ファイルを一括してあげたい場合*/
$ git add -A
/*"-A"を使うことで作業ツリー内のファイルを全て追加することができます*/

②ステージングエリア→ローカルリポジトリ

ステージングエリアからローカルリポジトリへファイルを上げることを、コミット(commit)と言います。コマンドは以下になります。

$ git commit -m "コミットメッセージ"
/*コミットメッセージはどういった編集内容なのかわかりやすく書いておくと良い*/

addしてステージングエリアにファイルをあげずコミットを行うと、"Changes not staged for commit:"と帰ってくるのできちんとaddしてからコミットを行うようにしましょう。

③ローカルリポジトリ→リモートリポジトリ

今回はリモートリポジトリにGitHubを使います。 ※まだGitHubを登録できていない場合は登録から行いましょう。以下の記事を参考に登録をしてから次に進みます。 登録の詳しい内容はこの記事では割愛させていただきます。 GitHub入門 〜アカウントを作成する方法

使用するコマンドは

$ git push

なのですが、最初にGitHubに上げる際にはこのままではうまくいきません。

ec2-user:~/environment/pictgram (master) $ git push
fatal: No configured push destination.
Either specify the URL from the command-line or configure a remote repository using

    git remote add <name> <url>

and then push using the remote name

    git push <name>

このようになります。リモートのリポジトリはどこやねんと言われてしまいました。 一番最初にリモートにアップロードする場合はきちんと宛先を指定しましょうね、という話です。

ではGithub上で作成したリモートリポジトリのURLをコピーしてきて先ほどのコマンドの続きに貼り付けます。 この際、リモートリポジトリの名前をつける必要があるのですが、この名前は一般的に"origin"という名前を使用します。コマンドは以下のようになります。

$ git remote add origin https://github.com/Toshimatu/pictgram.git

これでセッティングは終了。これでpushする準備ができたので改めてpushをしましょう。 なお、最初のpushは以下のように指定します。2回目以降は$ git pushのみでpush可能になります。

$ git push -u origin master

これにてGitHubにファイルの登録ができました! 実際にGitHubに登録されているか確認して、作成したリポジトリにコードが反映されていれば終了です。 これでようやくGitHubが使えるようになりました。ですが初回の登録をしただけで、まだ押さえておかなければいけないことはあります。続きは別記事かこの記事にて書いていこうと思います。(もしくは調べてみてください。)

最後に

簡単な説明ですがここまで読んで頂きありがとうございました。 修正等ありましたらご指摘ください。

【初心者向け】BitbucketからGithubにリポジトリを移す方法まとめ

はじめましてmat'sと言います。

プログラミングの備忘録としてこれからブログに書き残していこうと思います。主にRuby,Ruby on Railsについて書いていきます。

はじめに

Railsチュートリアルを学習している方は、チュートリアル通りに進めていたらGitリポジトリホスティングサービスにBitbucketを使っていると思います。 何故ならば”非公開リポジトリが無料”だから!

しかし、2019年の1月8日から GitHub無料ユーザーも無制限にプライベートリポジトリを使えるようになりました。

これを機にGithubに移行する方もいるんじゃないかなと思います。

そこで今回はBitbucketからGithubへ、つっかかりなくリポジトリを移す方法をまとめておこうと思います。

移行に先立って、簡単にBitbucketについて知っておくべきこと

BitbucketはGitHubと同じ、バージョン管理ツールのリポジトリを預かってくれるホスティングサービスです。 Bitbucketはアトラシアンという会社が運営しています。

最初に登録する際にはアトラシアンのアカウントに登録していることになります。

※Atlassianアカウントとは、アトラシアンのメンバーシップサービスを利用可能な無償アカウント。

[本題]リポジトリの移し方

BitbucketからGithubリポジトリを移す方法は下記リンクを参考に行なっていきます。 Githubへの移行方法

※Bitbucketを登録するときにGoogle認証でログインしていた場合

上記のやり方でつまづいた方がいらっしゃるかもしれません(自分がそうでした。) おそらく移行する際に求められるアカウント名とパスワードが分からなかったかと思います。

その場合は、下記リンクからパスワードを再設定し、再度移行の手続きをしていきましょう! Atlassianアカウントのパスワードの再設定

参考画面

<リポジトリ移行中の画面> リポジトリ移行中の画面

<リポジトリ移行が完了した画面> リポジトリ移行完了画面

参考URL

朗報、GitHub無料ユーザーも無制限にプライベートリポジトリを使えるようになる

Bitbucketで管理していたリポジトリをGitHubに移行するメモ