Rails関連のことを調べてみた2020年01月28日

Rails関連のことを調べてみた2020年01月28日

Rails、PostgreSQL bundle exec rake db:createコマンドの時のエラー

“`
bundle exec rake db:create
“`
RailsとPostgreSQLでアプリ作成時、上記のDB作成コマンドでエラーが発生。

“`
could not connect to server: No such file or directory
Is the server running locally and accepting connections
on Unix domain socket “/tmp/.s.PGSQL.5432”?
“`

postgresqlをリスタートすることで解決できました。

“`
$ brew services restart postgresql
“`

元記事を表示

センパイ!テストのメリットってなぁに?

## とある勉強会にて
勉強会で最近気になっていることがあれば教えてください。という優しいお声をいただき「テストコードを書くのって何がメリットですか?」と質問した時のことを書いていきたいと思います。

## テストを書くメリット

仕様書的な役割
どういう挙動を期待しているのかテストに書いておくことで、新しくプロジェクトに参加した人も理解しやすい

自分を守るため
他者に対して、このプログラムはこのようなテストが通ったという証拠を残せる

複雑な計算
テストコードを書いておけば、複雑な計算を検証の度に行う必要がない

自動化、効率化
コードにすることで、自動的にテストをしてくれるので効率的

変更に対応しやすい
税率変更など、変化があった時にテストを書いていると対応後の検証がしやすい

段階を踏んだ機能
例えば3段階あるプログラムで1段

元記事を表示

【Ruby on Rails】simple_formatの和訳

単純なフォーマットルールを使用してHTMLに変換されたテキストを返します。
2つ以上の連続する改行(\n\nまたは\r\n\r\n)は段落と見なされ、`

`タグでラップされます。
1つの改行(\nまたは\r\n)は改行と見なされ、
タグが追加されます。
このメソッドは、テキストから改行を削除しません。

任意のHTML属性をhtml_optionsに渡すことができます。 これらは作成されたすべての段落に追加されます。

“`html
my_text = “Here is some basic text…\n…with a line break.”
“`

“`html
simple_format(my_text)
# => “

Here is some basic text…\n
…with a line break.


“`

“`html
simple_format(my_text, {}, wrapper_tag: “div”)
# => “

Here is some basic text…\n

元記事を表示

FullCalendar イベントを重複させない方法

# はじめに
カレンダー内の赤枠に囲まれたイベントを下のイベントに重ねようとしたときに、禁止マークが出て重ねる事ができないような設定方法についてまとめました。

使用例としては、予約管理システムで時間の重複が許されないようなケースがあります。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/308256/5e5d6d57-76d1-6a2e-3afb-2e0ee79acafb.png)

#### 関連リンク
関連リンクを下記に載せておくので、必要であれば参考にしてください。。

* 【Rails】 5分でFullCalendar実装する方法
* https://qiita.com/syukan3/items/68280ce4ff45aa336363

# 前提条件

FullCalendarをアプリケーションに実装済みであること。

今回はRailsアプリケーションで実装しています。上記の記事を参考にしてみてください。
Railsを使ったことがない人でも簡単に実装することがで

元記事を表示

redirect_toとrenderの違い

初投稿です!
説明が足らないと思いますが、見てください!

#**redirect_toとrenderの違い**

![Untitled Diagram.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/538880/dc65bc70-3f55-4381-d01b-c58c62cc9fb2.jpeg)

redirect_toはroutingとcontrollerを通ってviewを表示していますが、renderはいきなりviewを表示させています。
redirect_toでは新たなリクエストがされたのと同じ動きになりますので、controllerを経由してviewが表示されます。
これによって、元のインスタンス変数が上書きされるかどうかが違います。

4行目、6行目↓

“`rb

def create
@group = Group.new (params)
if @group.save
redirect_to root_path, notice: “グループが作成されました!”

元記事を表示

【jQuery】セレクトボックスから取得した日付を現在と比較する方法

#はじめに
セレクトボックスから日付を取得し、`現在の日付`と比較していきます。

#参考文献
「jQueryのchange()で値が変更されたら発動」

jQueryのchange()で値が変更されたら発動


「どうしても「今日の0時」が欲しかった」
https://qiita.com/Bong/items/dc632edb6fe3d44f2d5b

#現在の日付の取得方法
まずは`現在の日付`を取得します。

“`javascript:JavaScript
var current_date = new Date(); //現在時刻の取得
current_date.setHours(0, 0, 0, 0); //時間を00:00:00にする
console.log(current_date); // => Mon Jan 27 2020 00:00:00 GMT+0900 (日本標準時)
“`
今回セレクトボックスでは、時間を入力する項目がないので、
イコールのパターンを再現するために時間を`00:00:00`にしました。

#セレクトボ

元記事を表示

【rails】twitter認証からアイコン画像を取得する

##はじめに
アイコン画像を表示するのに苦労したのでメモを残します。

##開発環境
Ruby on Rails 5.2

##手順

###取得方法

以下の様に記入して、twitter認証時にアイコン画像を取得します。

“`user.rb
def self.find_or_create_from_auth(auth)
provider = auth[:provider]
uid = auth[:uid]
name = auth[:info][:name]
image = auth[:info][:image]#これがアイコン画像
introduction = auth[:info][:description]

find_or_create_by(provider: provider, uid: uid) do |user|
user.name = name
user.image_url = image #image_urlにアイコンのURLが入る
user.introduction = in

元記事を表示

【rails】Atomでrubocopを使用して自動整形する

#最初に
Atom使用時に、コードを“`cmd + s “`で自動整形出来る様にするためにAtom Beautifyとrubocopを導入しました。

#やり方
1.AtomのPackageから“`Atom Beautify“`をインストール

2.AtomのPackageから“`linter“`と“`linterrubocop“`をインストール

3.以下のコマンドを入力し、rubocopをインストール

“`terminal:
$ sudo gem install rubocop
“`

4.rubocopのpathを取得

“`
$ which rubocop
“`

5.取得したpathを“`linterrubocop“`のSettingsのCommandにペーストする
(初期値はrubocopになっています)

####これで、“`cmd + s “`で保存した際に、自動整形出来る様になります!

元記事を表示

[Rails] cloud9でのパラメータ確認方法

#結論

コントローラーのPOSTに”raise”という文字を組み込む

#例

“`
def create
@voice = Voice.new
@voice.user = current_user
@voice.voice = params[:voice][:voice]

raise

if @voice.save
redirect_to @voice, notice: ‘Voice was successfully created.’
else
render :new
end
end

“`

#すると

![params.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/561934/a9120c5f-4772-a045-d5d9-43e88b09ff9e.png)

parameters以下に値が入っていれば表示される。

元記事を表示

[Rails] cloud9でのデバッグ方法

#結論

処理を止めたい場所で”debugger”と打ち込む

#例

“`
def create
@voice = Voice.new
@voice.user = current_user
@voice.voice = params[:voice][:voice]

  debugger

if @voice.save
redirect_to @voice, notice: ‘Voice was successfully created.’
else
render :new
end
end
“`

この状態でプレビュー画面にて処理を実行。(この場合だとcreateの処理を実行)

#すると

![debugger.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/561934/8d88ee52-76db-091d-ce6a-6170b775a1a8.png)

プレビュー画面が停止し、debuggerが起動される。

元記事を表示

Railsで1日以上詰まったエラー

## Railsを始めようとしたらさっそくエラーに遭遇

Railsを始めようとしたらエラーが出て丸一日なにも進みませんでした。
今日はそのエラーを共有します。

以下のようなエラーです

“` ruby
Webpacker::Manifest::MissingEntryError in hogehoge

Showing /Users/yuhiisk/Work/sites/smout/app/views/layouts/application.html.slim where line #10 raised:
Webpacker can’t find application.js in /Users/yuhiisk/Work/sites/smout/public/packs/manifest.json. Possible causes:
1. You want to set webpacker.yml value of compile to true for your environment
unless you are using the `webpack -w` or the w

元記事を表示

シェルをzshに変えたらrailsコマンドが使えなくなった件

#### まずはじめに、、、
– 自分のメモ用に書き残しておきたく投稿しているので読みづらかったり間違えている箇所があるかもしれないのでその点につきましてはお許しください
– 間違えている箇所につきましてはコメントでご指摘していただけたら幸いです

### さて本題の問題について
macOSをcatalinaにしてからシェルをzshにせずにbashのままでいたらターミナルを開くたびに見慣れない英語がずらりと書かれていたのでその通りにシェルをzshに変更した後にrailsコマンドを使おうとしたら、、、

“`
Rails is not currently installed on this system. To get the latest version, simply type:

$ sudo gem install rails

You can then rerun your “rails” command.
“`

この通りに実行しrailsコマンドをすると、、、

“`
You must use Bundler 2 or greater with th

元記事を表示

mapメソッドにてカテゴリのidの配列を新規作成

##mapメソッドについて調べてみると、
upcaseや変数*2などの例が多く、探すのに苦労したのでメモをします。

**まずmapメソッドの例ですが**

“`配列変数.map {|変数名| 具体的な処理 }“`

mapメソッドを調べるとこのように出てきます。

“`array = [‘a’,’b’,’c’]“`などの配列

“`array = array.map {|item| item.upcase } “`

mapメソッドは配列からレシーバの保持する配列などの各要素を1つずつ読み出し新しく配列を作成するメソッドなので、
array.mapでa,b,cの中から 変数itemを使い、文字を大きくするupcaseメソッドを使用し。

“`[“A”, “B”, “C”]“` として新しい配列を作成。

##実際にやりたい事##

**users**
**categories** (titleカラムにてカテゴリの名前を保存)
この二つを1:多の関係で作った際に。

ユーザーに紐付いている、categoriesテーブルのデータの中から、category_idとcate

元記事を表示

【Windows版】RubyとRailsのインストール方法

# はじめに
2020年1月27日時点で、“Ruby 2.5.0“と“Rails 5.2.3“をWindows 10 home(64bit)にインストールした。
RubyやRailsのインストール方法については色々な記事が存在するが、個人的に良いと思った記事に沿って、一部補足しつつ手順を説明する。

なお、本記事の内容は複数バージョンの切り替えには対応していない。
少し古いが、[この記事([2017年]WindowsでRuby on Rails環境構築の概要を知ろう![Ruby])](https://gabekore.org/windows-ruby-rails-overview)などで紹介されている、“Chocolatery“を使う方法が良いのかもしれない。

## Rubyのインストール
Progateの[この記事(Rubyの開発環境を用意しよう!(Windows用))](https://prog-8.com/docs/ruby-env-win)を主に参考にした。

1. まず、MSYS2をインストール
2. Rubyinstallerのダウンロード
3. [こ

元記事を表示

heroku run rails db:migrateするとbash: heroku: command not foundと出た時の対処法

##事象
railsチュートリアル2章の「2.3.5 アプリケーションをデプロイする」において、
$ git push herokuはできていましたが、
$ heroku run rails db:migrateをすると
“bash: heroku: command not found
“と出てしまいました。

##原因
environmentディレクトリ(別の階層)でherokuをcreateしていたからでした。

##対処法
ec2-user:~/environment/toy_appに移動してから
herokuのインストールコマンドを実行。

“`ec2-user:~/environment/toy_app
$ source <(curl -sL https://cdn.learnenough.com/heroku_install) ``` その後、 herokuの新しいアプリケーションを作成。 ```ec2-user:~/environment/toy_app $ heroku create ``` これにより、Railsアプリケーション専用のサブドメインが作成。

元記事を表示

#Rails で レコードが更新・保存されたかどうかを確認する ( saved_changes? )

“`rb
# Model Instance
user = User.first

user.saved_changes?
# => false

user.update!(name: “Alice”)
# User Update (0.8ms) UPDATE `users` SET `name` = ‘Alice’, `updated_at` = ‘2020-01-26 05:35:18’ WHERE `users`.`id` = 1

user.saved_changes?
# => true

user.reload
user.saved_changes?
# => false

# When nothing commit on DB
user.update!(name: “Alice”)
# (0.6ms) BEGIN
# (0.5ms) COMMIT

user.saved_changes?
# => false
# Then saved_changess?

user.update!(name: “Bob”)
user.saved_changes?
# => true

元記事を表示

#Rails ActiveRecord / detect updated DB records on instance / saved_changes?

“`rb
# Model Instance
user = User.first

user.saved_changes?
# => false

user.update!(name: “Alice”)
# User Update (0.8ms) UPDATE `users` SET `name` = ‘Alice’, `updated_at` = ‘2020-01-26 05:35:18’ WHERE `users`.`id` = 1

user.saved_changes?
# => true

user.reload
user.saved_changes?
# => false

# When nothing commit on DB
user.update!(name: “Alice”)
# (0.6ms) BEGIN
# (0.5ms) COMMIT

user.saved_changes?
# => false
# Then saved_changess?

user.update!(name: “Bob”)
user.saved_changes?
# => true

元記事を表示

Railsでajaxを実装する。基本の構造から、controller・jbuilderの書き方など。[Rails]

# 前提
Railsでajaxの復習をする機会ができたので、忘れないように手順をメモします。
こんな感じの、作品一覧ページ(work#index)から、各作品(work#show)の情報を非同期通信で読み込んで、モーダルウィンドウに表示します。(今回の記事にはモーダルウィンドウの実装は含んでいません)
[![Image from Gyazo](https://i.gyazo.com/ab98ec46af8e925d90f92879630d0d69.gif)](https://gyazo.com/ab98ec46af8e925d90f92879630d0d69)

「カテゴリー:」の記述がおかしなことになっていますが、、、次回直します。

## 基本の構造

今回作成したajaxの構造はこのような形です。

“`js:work_show.js
$(‘.work__img’).on(‘click’, function(e){
e.preventDefault();
var $workId = $(this).data(‘id’);

$.ajax({

元記事を表示

HerokuでRailsタスクを定期実行する方法(Google Apps Scriptのトリガーを使う方法)

HerokuにデプロイしたRailsアプリでタスクを定期実行する方法を紹介します。
ここで示す方法は、Google Apps Script (GAS)を使う方法です。

結論を先に述べると以下のようにします:
1. Railsタスクを作成しておく
2. GASでHerokuのAPI経由でコマンドをpostする関数を書く
3. GASでスケジューラーを作成する(トリガーを作る)

例として、Railsの場合を示していますが、GAS経由で「herokuのコマンドを定期実行する」という点がポイントなので、他の用途にも使えます。言語がRubyである必要性もありません。

この記事では、Railsの記事投稿アプリを例にとります。
スケジューラーを使って、24時間ごとにデータベースのテーブルのレコードを全て削除し、初期データをデータベースに入れる方法を示します。

## 対象読者:プログラミング初心者向け
– 私自身は転職活動中の未経験エンジニアです。内容には正確性を期しますが、間違いがあればご指摘くださると幸いです。
– 初学者がHerokuを使っていて、「Herkouでデータベースを定期的にリ

元記事を表示

カテゴリ別ランキング機能の実装

##概要

全体のランキング機能は他の記事を参考にして割と簡単にできたのですが、カテゴリ別ランキングの表示が分からずに一苦労したので纏めます。

スポット(Post)ごとに写真(Image)が投稿でき、写真ごとにコメント(Comment)が投稿できるアプリケーションを作成しております。
Imageにいいねをつけることができ、Post毎にいいね順で並び替えて表示させます。

ビューはHamlで書いております。
今回はCommentテーブルは関係ないので省略して書きます。
作成途中のため、細かいところはご容赦くださいませ。

##前提条件

Post、Imageテーブルは作成済み。
いいね機能は実装済み。(Like count)

##ルーティング

“`routes.rb
resources :posts, only: [:index, :new, :create, :edit, :update] do
resources :images, only: [:index, :new, :create, :show]
“`

##コントローラー

“`images_cont

元記事を表示

OTHERカテゴリの最新記事