Rails関連のことを調べてみた2019年12月25日

Rails関連のことを調べてみた2019年12月25日
目次

RailsでWebサイト作成

#はじめに
[前回](https://qiita.com/takurinton/items/94e75be0f5c65d746023)作成したRailsの環境を使って、今回はデータベースなしで簡単なWebサイトを作成していきたいと思います。[こちら](https://takurunprog.herokuapp.com/)から僕がRailsで作成したWebサイトに飛べます。
ソースコードは[こちら](https://github.com/takurinton/my_web_page)

#プロジェクト作成

“`cmd:cmd
rails new mypage
cd mypage
“`

はじめに、mypageという名前でプロジェクトを作成します。そうすると、今いるディレクトリの下に自動でたくさんのフォルダが生成されます。そこに移動してWebサイトを制作していきます。

次に、確認作業を行います。コマンドプロンプトで以下のコマンドを実行してください。

“`cmd:cmd
rails s
“`

これはRailsのコマンドを使用してローカルのサーバーを建てるという意味のコマンドで

元記事を表示

WEBエンジニアとして一人立ちした個人ロードマップ(実装編)

#はじめに
この記事は、[commew Advent Calendar 2019](https://qiita.com/advent-calendar/2019/commew)の25日目の記事です。

自分は組み込みをずっとやってて、1年前まではWEBの知識どころか経験もないエンジニアでした。
そんな自分が独学で勉強して現場でほぼ一人プロジェクトを経験して今、スタートアップでWEBエンジニアとして今一人で仕事を進めれるまでに至った学習ロードマップを紹介しようと思います。

#前提
・エンジニアとしての経験は3年(SEとしての経験)
・WEBの経験は無し
・一年前は、プログラミングはほぼコピペばかりであまり自信がなかった
・ほぼ独学(プログラミングスクールやメンターなどは未使用)
・あくまで自分が一年前から今までどんな感じで学習してきたかを振り返る形なので参考程度に見ていただければと・・・

#学習ロードマップ(実装編)
①〜④は独学
⑤〜⑦は業務
になります。

##①Railsチュートリアル(2019/01~2019/02)
一番最初にやったのはRailsチュートリアルでした。
まあ

元記事を表示

【Rails】RailsでAPIを作る`rails new –api` コマンドざっくりまとめ

## はじめに
RailsでAPIを作成するために使用する

“`shell
$ rails new –api
“`
について、通常の`rails new`と**何が違うのか**ざっくりまとめました。

※自分用メモです。:bow_tone1:

## 環境
“`yaml
OS: macOS Catalina 10.15.1
Ruby: 2.6.5
Rails: 6.0.2.1
“`
## 作成コマンド

“`shell
$ rails new my_api –api
“`

`–api`を付けることで、APIに必要なファイルだけがインストールされる。

## 通常の`rails new`との違い
– ApplicationControllerが継承するのはActionController::APIになる。(※通常はActionController::Base)
– ブラウザ向けアプリケーションでで使われるミドルウェア(cookiesのサポートなど)
– ブラウザ向けアプリケーションでしか使われないモジュール
– ビュー、ヘルパー、アセットは生成されない

元記事を表示

Vagrant + VirtualBoxでつくるRails 6系の環境構築

ここ数年Rails触ってなかったので、以前の[こちら](https://qiita.com/GenTamura84/items/0f97c117df6b1b6e8c0f)で書いたRails5系の記事を6系に更新したいと思います。

バージョンは

“`
Vagrant 2.2.6
VirtualBox 6.0.14
“`

です。

## 1. VagrantとVirtualBoxをインストール

### Vagrant
以下のリンクより、利用されている端末のOSを選択して、インストーラーをダウンロードし、Vagrantをインストールしてください。
https://www.vagrantup.com/downloads.html

### VirtualBox
以下のリンクより、利用されている端末のOSを選択して、インストーラーをダウンロードし、VirtualBoxをインストールしてください。
https://www.virtualbox.org/wiki/Download_Old_Builds_6_0

※ 2019/12/24現在、VirtualBox 6.1だと、 `vagr

元記事を表示

ストロングパラメータとは

# ストロングパラメータとは

paramsは情報を受け取れるとても便利なものだが、不正な情報を防ぐことができません。そんな時に使うのが「ストロングパラメータ」です。
「ストロングパラメータ」とは不要な情報を受け取らないようにしてくれるもの、セキュリティーを強化してくれるものになります。

# ストロングパラメータの設定
ストロングパラメータはユーザーのログイン時などによく使用されるため、今回はログイン時を想定して設定を行いました。

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

上記を設定することで、userはname、email、password、password_confirmationのデータしか受け取れないようになります。

元記事を表示

Ha4go運用の実績と課題 2019

Ha4go の開発と運用をやっている @PharaohKJ です。この記事はチームの総意だとかそういうのじゃなく、あくまでも開発と運用を担当している私の考えていることです。いわゆるシビックテック発のプロダクトを開発・運営する現場について少しでも感じる、伝わればと思っています。

# Ha4go とは

[Ha4go by codeforkanazawa-org](http://ha4go.net/) を参照してください。一応、[Code for Kanazawa](https://github.com/codeforkanazawa-org) にリポジトリがあって開発されています。

CfKのメンバーだけではなく、 Code for Okinawa の [kimihito (kimihito)](https://github.com/kimihito) さん、Code for Japan の [halsk (Hal Seki)](https://github.com/halsk) さんにもコードのコミットをいただいて共同開発しています。

大きな役割は3つだと考えています.

– みん

元記事を表示

Railsアプリ、EC2の本番環境でMySQLを直接いじる方法

自分の作ったアプリを本番環境で起動させた時に、エラーが出てしまうことはあると思います。
currentフォルダ内のlogを見て、エラーを発見したとしても、それがMySQLのエラーだと直接コマンド打たないと行けないので、修正が結構めんどくさいんですよね!

そこで、よく使うMySQLのコマンドをまとめました!

##ログイン

“`
$ mysql -u root -p
Enter password: パスワードを入力(実際に文字は見えません)
“`

##データベースの確認
“`
show databases;
“`
以下のように出てきます

“`
+———————————-+
| Database |
+———————————-+
| information_schema |
| xxxxxxxxxxxxxxxxxx|
| mysql |
| perform

元記事を表示

ドラックアンドドロップで、投稿内容の非同期削除を実装する! [JQuery, Rails]

## 概要
先日クローゼットアプリ(衣服などの管理をするもの)を作成しました。
ドラックアンドドロップにて投稿内容を削除する機能を実装しました。
該当の箇所に投稿内容をドロップした際に、非同期で削除をするというものです。
備忘録も兼ねて投稿しますので、温かい目で頂けると幸いです:grinning:

こちらが実際の動画です。
![demo](https://user-images.githubusercontent.com/55831482/71306276-91641f00-2421-11ea-82f4-8fb3db571b30.gif)

画像を左下のゴミ箱のアイコンにドロップした際にイベントを発火させ、非同期で削除しております。
画像がドラッグされている間にゴミ箱のアイコンに新たなクラスを付与し、アニメーションのように実装しております。

## 流れ
1. JQuery UI導入
2. viewにカスタムデータを追記
3. JQueryにコード記載
今回は削除機能の実装ですので、jsonなどcontrollerの追記は必要ありません。

## 1. JQuery UI導入

元記事を表示

世の中の1%の人の為になるかもしれないRails tips

# はじめに
本記事は[Zeals Advent Calendar 2019](https://qiita.com/advent-calendar/2019/zeals)の24日目です。メリークリスマスイブ!

本記事では僕が日々開発しているなかで、どうしてもなんとかしなければいけない…という時に活用したtipsをまとめたものです。
タイトルにある通り、エッジケースすぎるのでもし同じような状況で困っている人の為になれたら幸いです。

# 環境
Rails 5.2.3
Ruby 2.5.5

# tips
といっても今回紹介するのは2つです

– カラムにaliasをかける
– caller

## カラムにaliasをかける
Railsではcolumnに対してaliasを貼ることができます。

| モデル名 | カラム名 |
|:—————–:|:——————:|
| Button | name |
| Choice | label |

このようなモデルが2つあるとします。
カラム名はそれぞれ違いますが同じものとして扱いたい時があると思い

元記事を表示

Youtuber向けにサービス開発したが需要が無かった話

##はじめに
プログラミング始めて半年くらいで自分の好きなタイ在住日本人Youtuberに使ってもらいたくて開発した時の話です。結論から言うと上手くいかなかったです。その原因としてリサーチ不足と自己満の開発であったからです。今後サービス開発をする人にとって今回の自分の経験が役立てばいいなと思い、今回のことの経緯をまとめておきます。

##結論
・競合サービスのリサーチが大切
・ユーザーにしっかりとリサーチすることも大切
・自己満のサービスになっていないか

##何を作ったのか
私は1つのMAP上でYoutuberは撮影した場所にピンをさすことができ、そこをクリックすると詳細情報が見れて最終的にはYoutubeチャンネルに移動する。そして視聴者はYoutuberに撮影して欲しい場所に対してピンを挿してリクエストできる双方向コミュニケーションサービスを開発しました。

##難易度
サービス自体はRuby on Railsで開発を行いProgate卒業すれば作れるような簡単なものでした。
MapにはGoogle map APIを使用しました。
そして機能自体もシンプルだったので開発自体はそれ

元記事を表示

Railsチュートリアルを必要コマンドだけをまとめて記しました。第1章

|       |   Railsチュートリアル   |
|:——————:|:——————:|
| 対象者 | 中級者向け(最低でもRuby, HTML/CSS, Railsの基礎) |
| 何ができるか | 本格的なアプリを開発でき、最終的にWeb上に公開できる |
| 開発環境 | AWS Cloud9 or ローカル環境 |

#1.2.2 Railsをインストールする
| リスト 1.1: バージョンを指定してRailsをインストールする |
|:—————–|
| $ gem install rails -v 5.1.6 |

| リスト 1.3: rails newを実行する (バージョン番号を指定) |
|:—————–|
| $ cd ~/e

元記事を表示

ドロップダウン機能を有効にするため、Railsのapplication.jsファイルを通して、Bootstrapに同梱されているJavaScriptライブラリとjQueryを読み込むようアセットパイプラインに指示

railsチュートリアルで、Accountをクリックしてプルダウンメニュー出すために、少し手こずったのでメモ。

実装させたい機能⬇️
![fullsizeoutput_b8c.jpeg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/508248/3dbcf45c-8c8d-802a-0263-771a884bb949.jpeg)
application.jsに2つのライブラリを追加。

“`application.js
//= require rails-ujs
//= require jquery    ⇦追加
//= require bootstrap   ⇦追加
//= require turbolinks
//= require_tree .
“`
![fullsizeoutput_b8b.jpeg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/508248/0551ebd6-ce14-558f-d626-69e1de0

元記事を表示

rails 『アウトプット』

application.scssがおかしいと思い@importの順番を変えたが反映されず名前を変えてもエラーが出なかったためapplication.html.hamlを見たら配置ミスがあった。application.html.hamlはhaml,scss両方を統合しているため確かめる必要がある。

元記事を表示

[rails]credentials.yml.encにdatabase設定を保存している場合のheroku デプロイ

##ローカルの開発環境
データベースのパスワードなどを平文でdatabase.ymlに保存したくないので、
credentials.yml.encにdatabaseのパスワードなどを保存している。

[【備忘録】credentials.yml.encにdatabase設定を保存する](https://qiita.com/NaokiIshimura/items/e5db6ca7d56f2cb1f1fb)

##heroku
この環境のままherokuにデプロイし、db:migrateするとherokuのdbに接続できず、エラーになる。

“`sh:
$ heroku rake db:migrate
….
rake aborted!
NoMethodError: Cannot load database configuration:
undefined method `[]’ for nil:NilClass
“`
このままheroku openすると以下のようなエラーになってApp Crashedになる。

“`sh:
heroku[router]: at=error cod

元記事を表示

railsにてcreated_at の曜日も日本語で表示する方法( lメソッド)

– 目標①:railsにて、DBからcreated_at の日時を表示(取得)したい。

“`変数.html.erb
<%= link_to(変数.created_at.strftime('%Y年/%m月/%d日(%a)%H:%M')," リンク先を記入") %>
“`
– まず試したコード
(今回は、更にlink_toを使いたい)

– 「 XXXX年 XX月XX日(mon) XX:XX 」とまで成功。
– <%= 変数.created_at.strftime('%Y/%m/%d(%a)%H:%M') %> を実行し、曜日が英語標記のままのため苦戦。
– #{%w(日 月 火 水 木 金 土… 系も試したが、上手くいかない。
– config/initiallzers/time_formats.rb等も作成し定義を試したが、上手くいかない。

ーーーーーーーーーーーーーーーーーーーーー

<備忘録>
***目標② (mon)ではなく、曜日も日本語で表示する簡単な方法***

①gem ‘i18n_generators’ をbundleインストール

②en.y

元記事を表示

RUNTEQの講師をやってみてわかった初学者にありがちなパターン20選(後編)

前回の記事の続きです!
[RUNTEQの講師をやってみてわかった初学者にありがちなパターン20選(前編)](https://qiita.com/DaichiSaito/items/52448ebfcb0db768dcf3)

# 11. 『フォームとは』が曖昧
Rails云々の以前の話で、フォームがなんなのかの理解が浅いです。Railsから入った人は特にそうなのかもしれません。

– **nameとvalueがペアになってサーバに送られる**
– **nameとvalueはinputやselectやradioなどに付与される**
– **action属性に指定されたURLに対して入力値が送られる**

これを知っているだけでRailsでの開発が一気にスムーズになるはずです。
逆にこれを知らないと`form_with`などのフォームヘルパーが何をやっているかブラックボックスすぎて魔法のようにしか感じられないでしょう。

フォームとは要は**クライアントとサーバの窓口**です。お互いを繋ぐものです。お互いを繋ぐというからには**インターフェース(接点)**があるはずです。
ではインターフェ

元記事を表示

【Rails】アソシエーションを独自メソッドで定義した時の「source:」の記述注意点

# この記事の対象者
– Railsでアプリケーションを作り始めたばかりの人
– アソシエーションを学んだばかりのプログラミング初心者

# 伝えたいこと
中間テーブルの外部キーを独自カラムで設定したい時、「source: ○○」を中間テーブルの「belongs_to: ○○」と一致させる必要がある。

# テーブル設計

スクリーンショット 2019-12-24 11.09.39.png

多対多のテーブルを繋ぐ中間テーブルの外部キーを独自カラムに設定したい時ありますよね。

今回は、UserテーブルのID(主キー)をManagementテーブル(中間テーブル)の「participant_id」という独自カラムの外部キーで設定するパターンで考えていきます。(通常は「user_id」で定義する)

※UserとE

元記事を表示

新卒が入社半年で社内サービスをリリースしてエンジニア楽しいってなったお話

[Classi Advent Calendar](https://qiita.com/advent-calendar/2019/classi) 22日目は、新卒でClassiに配属され、エンジニアをしている@ruru8がお送りします。

今回お話するのはClassiの社内研修のお話。からのその過程で作成したRailsアプリケーションのお話です。
作成したアプリケーションは『Classi BookBook(クラッシーブックブック)』と称し、社内で多くの人に利用してもらえるサービスとなりました。
なんの経験もスキルもない新卒エンジニアがいったいどのようにして社内で親しまれるサービスを作ったのか、自分の中での振り返りの意味も込めてお話したいと思います。

## Classi BookBookって?
社内での書籍購入を管理するアプリです。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/533070/21cb1d4c-4b40-024d-e640-10af65a20d81.png)
書籍一覧で登録

元記事を表示

Railsにマークダウン記法を取り入れる方法

## 結論
1,2,3を導入すればいい

**1.** gem ‘redcarpet’

**2.**

“`rb
module MarkdownHelper
def markdown(text)
options = {
filter_html: true,
hard_wrap: true,
space_after_headers: true,
with_toc_data: true
}

extensions = {
autolink: true,
no_intra_emphasis: true,
fenced_code_blocks: true,
tables: true
}

renderer = Redcarpet::Render::HTML.new(options)
markdown = Redcarpet::Markdown.new(renderer, exte

元記事を表示

Rails6 each文にてeachがメソッドとして扱われて困った話

# 目的

– each文を使用してカラム内容を順に出力したい時にeachがメソッドとして扱われてしまって困ったときの解決法をまとめる

# 結論

– each文で繰り返し処理の対象の変数に格納されている値を配列状態で格納する。

# エラーの内容とエラー時のコード

– 当該ページは`@posts.content`に格納されている内容をeach文で次々渡し、表示する処理がある。
– 当該ページへアクセスしたところ下記のエラーが発生した。

“`
undefined method `each’ for #
“`

– エラーに関係するルーティングファイルの内容を記載する。

“`rb
get “posts/index/:id” => “posts#index”
“`

– エラーに関係するpostsコントローラファイルの内容を記載する。

“`rb
def index
@posts = Post.find_by(id: params[:id])

元記事を表示

OTHERカテゴリの最新記事