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

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

【Rails6】form_withヘルパーのsubmitボタンにアイコンを付与する方法

form_withヘルパーのsubmitボタンに、Bootstrapのアイコンを付与しようとしたところ、下記実装では表示されませんでした。

“`erb
<%= f.submit "検索", class: "btn btn-primary bi bi-search" %>
“`

![スクリーンショット 2022-01-24 10.58.27.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1292797/b8d6fe72-620c-d6c2-e184-721c729d4bb6.png)

# 解決策
参孝欄の記事から`button_tag`が代わりに使用できることがわかったので、以下のように修正したらアイコンが表示されるようになりました。

“`erb
<%= button_tag(type: "submit", class: "btn btn-primary") do %>
検索
<% end %>
“`

![スクリーンショット

元記事を表示

Railsで日本時刻にする方法

##投稿時刻の表示を変更しよう

###application.rbの編集

“`ruby:application.rb
module ShoApp
class Application < Rails::Application # Initialize configuration defaults for originally generated Rails version. config.load_defaults 6.0 config.i18n.default_locale = :ja config.time_zone = 'Tokyo' # 中略 ``` ### ja.ymlファイルを作成して、表示する時刻のフォーマットを設定 ```ruby:config/locales/ja.yml ja: time: formats: default: "%Y/%m/%d %H:%M:%S" ``` 続いて、この時刻設定を元に、lメソッドを利用して、表示する時刻へ反映させます。 * lメソッド l(エル)メソッドは、

元記事を表示

Railsにおけるto_jsonのオプション

## 概要
今回は先日改めて学んだto_jsonのオプションについてアウトプットしたいと思います。
Railsのコントローラーなどでよく使用します。

## 環境
ruby: ‘3.0.1’
rails: ‘6.1.4.1’

## to_jsonについて
### to_jsonとは
`to_json`とはオブジェクトをJSON形式に変換してくれるメソッドです。

“`ruby
user = { id: 1, name: ‘user1’, age: 22 }

user.to_json #=> “{ \”id\”:1, \”name\”:\”user1\”, \”age\”:22 }”
“`
なお上記user定義はこの後の説明で使用していきます。

### よく使用するオプション各種
#### 1. include
`include`は__関連付けされているテーブルのカラムも一緒に取得__できるオプションです。
例えば、`user`を取得するときにその`user`が投稿した`post`データも一緒に取得したい場合などに使用します。

“`ruby
class User < App

元記事を表示

Ruby環境からPythonスクリプトを叩いてデータを得るまで

こんにちは。

Rubyを使っているとき、RubyからPythonスクリプトを叩いて、その結果をRubyで表示することが出来たらいいなと考えました。
想定するケース例としては、**RailsのバックエンドでPythonの機械学習コードを実行したい**といったものになります。

今回のブログでは、`Ruby環境からPythonスクリプトを叩いてデータを得るまで`について述べていきたいと思います。

このブログで得ることができる情報は以下になります。
>・Ruby環境でPythonスクリプトを実行したいときの手順
・Flaskの簡単な使い方
・RubyのNet::HTTPクラスの簡単な使い方

#実装した手順について簡単に概要を。

私が実装した方法は以下になります。
>**1. Flaskを用いて、PythonスクリプトをAPI化する
2. API化したものをローカル上で実行(Run)する
3. RubyのNet::HTTPクラスを用いてローカル上のAPIを叩く**

![image.png](https://qiita-image-store.s3.ap-northeast-1.ama

元記事を表示

【Rails】dotenv-railsの導入方法

## はじめに
 本記事は、プログラミング初学者が、学習を進めていて疑問に思った点について調べた結果を備忘録も兼ねてまとめたものです。
 そのため、記事の内容に誤りが含まれている可能性があります。ご容赦ください。
 間違いを見つけた方は、お手数ですが、ご指摘いただけますと幸いです。

## dotenv-railsの導入方法

### dotenv-railsを導入
Gemfileに以下を追加

“`:Gemfile
gem ‘dotenv-rails’
“`

`bundle install`する

“`:Terminal
$ bundle install
“`

### .envファイルの作成
アプリケーションフォルダの直下に.envファイルを追加

“`:Terminal
~~~/sample_app $ touch .env
“`

### .envファイルに環境変数を記述

“`.env
SECRET_KEY= “test”
“`

### rails cで確認

“`:Terminal
~~~~/sample_app $ rails c
“`

ENV[

元記事を表示

CypressOnRailsについて簡単にまとめてみた

## 目次
Cypressとは?
概要
インストール方法
使用方法(起動・実行編)
使用方法(テストコード編)

## Cypressとは?
CypressOnRailsの導入を試みる前に、まずはCypressについて学びましょう。
Cypressは公式ドキュメントが充実しており親切にチュートリアルの動画も載せてくれてます。
この記事ではCypessとは?については省略しているので公式ドキュメントを参照ください。

– [公式ドキュメントのチュートリアル](https://docs.cypress.io/examples/examples/tutorials#Best-Practices)
– [Getting Start](https://grant-ps.blog/2018/08/10/getting-started-with-cypress-io-and-ruby-on-rails/)
– [Introduction](https://www.shakacode.com/blog/introduction-to-cypress-on-rails/)

## 概要
ざっくりまとめ

元記事を表示

[JS]配列の繰り返し処理

アウトプットとして

JavaScriptにおける繰り返し処理(for文)を先日記事にしたので、今回は配列の繰り返し処理について。
[JSの繰り返し処理](https://qiita.com/Shi-raCanth/items/d8a04310f99abc3a44df)

##for文を使う場合

“`javascript
const fruits = [‘apple’, ‘orange’, ‘banana’]

for (let i = 0; i < fruits.length; i++) { console.log(`${i}:${fruits[i]}`) } //出力結果 //0:apple ​//1:orange ​//2:banana ``` 条件式に「配列の要素数よりiが小さい場合に実行(上記は、3より小さい場合)」として処理すると、繰り返し処理が配列の要素分実行される。 ##forEach文を使う場合 こちらの方がシンプルに書ける forEach関数の引数に関数を指定することで、実行することができます。 指定した関数に引数を定義することで、その引数には配列の要素

元記事を表示

Dockerを使用したRailsアプリをAWS(EC2, RDS)からHerokuに移行する

AWSの無料枠が使える期限が差し迫っていること、今後は別アプリに力を入れたいのでAWSにアップしているRailsアプリを停止することにしてHerokuに移行することにしました。

AWSからHerokuに移行している参考になりそうな以下の記事があったのですぐできるかと思ったのですが、数日費やすことになってしまったので備忘録としてのこします(全体の流れとしてはとてもわかりやすいです)。
[【Rails + MySQL】AWS→herokuの移行 – blog.aiandrox](https://blog.aiandrox.com/posts/tech/2021/02/10/)
[HerokuにMySQL+NginxのRailsアプリを移管した – kumamotone’s blog](https://kumamotone.hatenadiary.jp/entry/2020/01/04/161139)
## 動作環境

– MacOS
– Rails(6.0.4.1、gem `dotenv-rails`を使用して環境変数管理)
– Ruby(2.7.3)
– MySQL(5.7系)
– D

元記事を表示

アプリを作る 基本的ログイン機構

###ログイン機能を作る

####そのためにコントローラを作る

“`rb
ubuntu:~/environment/my_app (basic-login) $ rails generate controller Sessions new
Running via Spring preloader in process 15621
create app/controllers/sessions_controller.rb
route get ‘sessions/new’
invoke erb
create app/views/sessions
create app/views/sessions/new.html.erb
invoke test_unit
create test/controllers/sessions_controller_test.rb
invoke helper
create app/helpers/sessions_h

元記事を表示

アプリを作る ユーザー登録

##ユーザーを登録する
###ユーザーを表示させる

####デバッグ情報を追加する
app/views/layouts/application.html.erb

“`


.
.
.

<%= render 'layouts/header' %>

<%= yield %>

<%= render 'layouts/footer' %>
<%= debug(params) if Rails.env.development? %>


“`
####デバックの情報のCSSの表示
app/assets/stylesheets/custom.scss

“`c

元記事を表示

Railsで全てのレコードを検索する

##全てのテーブルの全てのレコードの中から特定の単語を検索する方法

以下のコードをコピーして、検索したい文字列を入力して、コンソールで実行するだけで検索できます。

“`search_word.rb
ActiveRecord::Base.connection.tables.each do |table|
model_name = “#{table.camelize.chop}”.constantize rescue next
model_name.column_names.each do |column_name|
if model_name.columns_hash[“#{column_name}”].type.to_s == (“string” || “text”)
pp table_model.where(“#{column_name} like ?”, ‘%ここに検索したい文字を入力%’) rescue next
end
end
end
“`

##よくわかる解説

大まかな方針としては、“(モデル名).where(“カラム名

元記事を表示

[めんどくさがりな人向け] docker + rails 即行資源

下記の方を対象に簡単な資源を用意しました。
・ローカル環境汚さずにrailsしたいな
・dockerの設定めんどくさいな
・動確用にテンプレートほしいな

# 前提
docker公式に記載されているrailsの利用手順に沿い、テンプレートを用意しています。
https://docs.docker.com/samples/rails
dockerは予めインストールしておいてください。

# 即行資源
https://github.com/higak926/drf

資源をcloneし、READMEに従いビルドして起動すると即railsが利用できます。
※ rubyやrailsのバージョンを指定しなおしたい方は適当にDockerfileのrubyやGemfileのrailsのバージョンを変更してください

それでは良い開発を?

元記事を表示

Lightsailインスタンス(EC2)にデプロイしたRailsアプリでCSSの修正が反映されない

## 困っていたこと
Railsでガチでフランス語のアプリを個人開発しています。:fr:
(フランス語やってる方がいたら、覗いてみてください https://minnfra.com/ )

CSSの修正が反映されなくて困っていました。
デプロイした時は、CSSもJSもきちんと反映されていたのですが、それ以降に修正を行って、インスタンスでGithubリポジトリをpullして`rails assets:precompile RAILS_ENV=production`を実行しても下記のようにエラーになり変更が反映されないという状態でした。

“`
[ec2-user@… REPOSITORY]$ rails assets:precompile RAILS_ENV=production
yarn install v1.22.17
[1/4] Resolving packages…
success Already up-to-date.
Done in 1.26s.
rails aborted!
NoMethodError: undefined method `+’ for nil:N

元記事を表示

ruby on rails アセットパイプライン

## はじめに
ruby on rails チュートリアルを学習中
初学者

## アセットパイプラインとは
簡単に言えば複数のファイルを一つにまとめるための機能
scssを最終的に1つのcssにまとめる等
今では多くの言語でファイルをバンドルしているが、ruby on railsにアセットパイプラインが追加されたのをきっかけに
多くの言語やFWで取り入れられたらしい。

## Railsでのアセットパイプライン
**理解するべきこと3つ**

– アセットディレクトリ
– マニフェストファイル
– プリプロセッサエンジン

### アセットディレクトリ
アセット(画像やcss(scss))の置き場所
railsの場合`app/assets`に`stylesheetsやimagesディレクトリ`がある
`sample.svg`を保存する場合
`app/assets/images/sample.svg`となる
画像やcssの置き場所を固定することで、開発者間での違いをなくすことができ、開発効率や保守性を上げることができる

### マニフェストファイル
静的ファイル(アセット)をどのよう

元記事を表示

【Rails】bulletで検知できないN+1を解消する part1

#初めに
Railsのviewの表示速度の低下理由として、partialの使いすぎやN+1問題があります。
このN+1問題を検知するgemとして、有名なのがbulletです
ただし、全てのN+1を検知してくるわけではありせん

###本記事について
bulletで検知できないN+1が発生した時の対処法を僕なりに書いた記事になっております。
間違ったことなどがあれば、ご指摘ください。

#本文
###モデルの定義
まずは、モデルを定義します。
コーヒー豆(bean)とレビュー(review)が1対多で関連付けされています。
beanにはコーヒー豆の名前と国、説明のカラムが存在しています。
reviewにはレビュー内容と香り・甘味・苦味・コク・酸味のカラムが設定されています
香り・甘味・苦味・コク・酸味は1から5の数字で評価していただく形になっています。

“`ruby:bean.rb
# Table name: beans
#
# id :bigint not null, primary key
# name :strin

元記事を表示

Dokcerによる Rails:6.0, MySQL:8.0の環境構築

“`yml:docker-compose.yml
version: “3”

# .envファイルに環境変数は指定
services:
db:
image: mysql:8.0
environment:
– MYSQL_ROOT_PASSWORD=$DB_PASSWORD
– MYSQL_USER=$DB_USER
– MYSQL_PASSWORD=$DB_PASSWORD
– TZ=Asia/Tokyo
command: mysqld –character-set-server=utf8mb4 –collation-server=utf8mb4_unicode_ci
volumes:
– mysql-data:/var/lib/mysql
ports:
– 3306:3306
app:
build: .
command: /bin/bash -c “rm -f /$WORKDIR/tmp/pids/server.pid && bundle exec r

元記事を表示

Ruby on Railsでアプリを作成してみた【1】【recipegram】

##参考サイト
[【プログラミング入門】Ruby on Rails でウェブアプリを作ってみよう ~ PART 1(イントロダクション)~ Let’s build with Ruby on Rails]
(https://www.youtube.com/watch?v=auLih2TFwio&t=647s)

元記事を表示

Rails 複数 画像投稿 Cloudinary CarrierWave

# 環境
ruby 3.0.2
Rails 6.1.4.4

# 実装
cloudinaryの登録を済ませてください

https://cloudinary.com/

## gemの追加

“`ruby:Gemfile
gem ‘carrierwave’
gem ‘cloudinary’
“`

“`
$ bundle install
“`

## モデルの作成
PostとImageは1対多のアソシエーションで実装します

“`
$ rails g model post body:string
$ rails g model image post:references, image:string
$ rails db:migrate
“`
“`ruby:models/image.rb
class Image < ApplicationRecord belongs_to :post mount_uploader :image, ImageUploader end ``` ```ruby:models/post.rb class Image < Applicati

元記事を表示

form_withを使ったRails.fireの使い方

## form_withを使ったRails.fireの使い方

JS側からsubmitを行う方法として、Rails.fireを使う方法があります。
Rails.fireを使うとajax通信が可能になります。
form_withの中で、local: falseを指定することによって、html.erbがコンパイルされた結果のhtmlに「data-remote=”true”」が記述される様になり、ajax通信が可能になります。

– html.erb側

“`
<%= form_with(model: @hoge, url: '', id: 'hoge_form', local: false) do |f| %>
<%= f.text_field :name, placeholder: 'test' %>
<%= f.button id: 'hoge_submit' ,type:'button' %>
<% end %>
“`

– js側

“`
import Rails from “@rails/ujs”;

$(document).on (‘turbolinks:load

元記事を表示

FactoryBot(Rails)のtraitとは

## 概要
`FactoryBot`を使用する際の`trait`の使い方についてアウトプットしたいと思います。

## traitとは
FactoryBotでテストデータを定義する際に用いるオプションのことです。
`trait`を使用することによってテストファイル内でデータを定義する際により簡潔に記載することができるようになります。

## 使用例
### 前提
Userモデルにて`name`に10文字以内というバリデーションが定義されていると仮定します。
そのバリデーションについてのテストを行う際のテストデータの定義を行います。
なおテストの記載は割愛します。

_*factories/user.rb*_

“`ruby
FactoryBot.define do
factory :user do
name { ‘太郎’ }

trait :over_length_name do
name {‘a’ * 11}
end
end
end
“`
### traitを使用する場合
下記のように記載するだけで`name`が11文字のデータを定義

元記事を表示

OTHERカテゴリの最新記事