Ruby関連のことを調べてみた2021年01月18日

Ruby関連のことを調べてみた2021年01月18日

Rails 記事詳細リンクは、ループ内でしか機能しない?

## 背景
Page#homeで記事一覧(Posts#index)を表示し、そこに記事詳細(Posts#show)をリンクを貼った。そのときに学んだ事の備忘録。

## 結論

記事詳細リンクはこう貼った。(成功したコード)

“`ruby
<% if @posts.any? %>

<% @posts.each do |p| %>

#記事詳細のリンク↓
++<%= link_to post_path(p), class: 'text-body' do %>

<%= image_tag p.image.url, class: 'img-fluid' %>

<%= p.title %>

<%= p.tag %>

<% end %>
<% end %>

元記事を表示

wrong number of arguments (given 1, expected 0)

いくつかエラー原因はあるかと思いますが、僕の場合は、paramsと[:id]の間にスペースが空いているという事でした。

“`ruby
#スペースが空いている
@post = Post.find(params [:id])
“`

エラーが消えた。

“`ruby
@post = Post.find(params[:id])
“`

元記事を表示

Ruby on Railsのconfig設定

この記事ではRails6.1のconfig設定をメモしています。

##config/application.rb

タイムゾーンをローカルに設定する

“`ruby
config.time_zone = ‘Tokyo’
config.active_record.default_timezone = :local
“`

##config/puma.rb

developmentではlocalhost:3000、productionではunix socketを使用する

“`ruby
if ENV.fetch(“RAILS_ENV”, “development”) == ‘production’
bind “unix://#{Rails.root}/tmp/sockets/puma.sock”
else
port ENV.fetch(“PORT”) { 3000 }
end
“`

##config/environments/production.rb

キャッシュにredisを使用する

“`ruby
cache_servers = %w(redis://loc

元記事を表示

不正な config/master.key が原因でRailsの起動に失敗するケースとその対処方法

## 発生する問題

git cloneでローカルに持ってきたRailsアプリを、`rails s`や`rails c`で起動しようとすると以下のようなエラーが発生する。

“`
$ rails s
=> Booting Puma
=> Rails 6.1.0 application starting in development
=> Run `bin/rails server –help` for more startup options
Exiting
/Users/jnito/.rbenv/versions/3.0.0/lib/ruby/gems/3.0.0/gems/activesupport-6.1.0/lib/active_support/message_encryptor.rb:203:in `rescue in _decrypt’: ActiveSupport::MessageEncryptor::InvalidMessage (ActiveSupport::MessageEncryptor::InvalidMessage)
“`

## エラーの原因

`c

元記事を表示

SNS認証時のエラーについて

# 経緯
ウィザード形式のユーザー登録機能実装後、
SNS認証を追加するために
registrations_controller内に必要な記述をした。
(userモデルは記述済み。)

“`ruby:controller
class Users::RegistrationsController < Devise::RegistrationsController #一部省略 def create if params[:sns_auth] == 'true' pass = Devise.friendly_token params[:user][:password] = pass params[:user][:password_confirmation] = pass end super #ここまでがSNS認証実装に追記した記述 @user = User.new(sign_up_params) #ここからウィザード形式のための記述 unles

元記事を表示

36年前の沢口靖子さんのプロフィールを確認した話

#当時の記憶
36年前当時、JR-200 ([Wikipedia](‘https://ja.wikipedia.org/wiki/JR_(%E3%82%B3%E3%83%B3%E3%83%94%E3%83%A5%E3%83%BC%E3%82%BF)#JR-200’))というグラフィック機能はイマイチなパソコンを使っていました。歳がバレますね(笑)。
パソコン雑誌に掲載されるプログラムの数も限られており、他機種からの移植をしようにもグラフィック機能がネックで諦めることが多かったように思います。
その当時のPOPCOM ([Wikipedia](‘https://ja.wikipedia.org/wiki/%E3%83%9D%E3%83%97%E3%82%B3%E3%83%A0’))という雑誌にデビューしたばかりくらいの沢口靖子さんを題材にしたプログラムが掲載されたのですが、自分のパソコンでは実行できないと諦めたと思っていました。自分の記憶では沢口靖子さんの顔をパソコンのグラフィックで表示するプログラムだと思っていました。何故かその事がずっと気がかりというか頭の片隅にあったのですが、偶然メ

元記事を表示

Rails 検索機能の実装

# Rails で検索機能を実装

## View に form_tag で検索窓を設置

“`ruby

検索:

<%= form_tag(posts_path, :method => ‘get’) do %>
<%= text_field_tag :search, "", {class: "search_field_type"}%>
<%= submit_tag 'Search', :name => nil, class: “search_field_btn” %>
<% end %>

“`

form_tag(posts_path, :method => ‘get’) の path の部分はクラス名によって任意に変更してください。

## Model に検索のためのメソッド search を設定

post.rb

“`ruby
def self.search(search)
if search
Post.where([“

元記事を表示

Rakefileでdirectoryタスクを記述してもディレクトリが作成されない

## 事象

Rakefileでdirectoryタスクを記述してもディレクトリが作成されない。

## 結論

directoryタスクを記述(宣言)するだけではなくて、そのタスクが
実行されるようにどこからか呼び出さないといけなかった。

## 詳細

“`ruby
directory “doc”

desc “create task”
task “create” do
cd “doc”
end
“`

“`console
> rake -t create
** Invoke default (first_time)
** Invoke create (first_time)
** Execute create
cd doc
rake aborted!
Errno::ENOENT: No such file or directory @ dir_s_chdir – doc
“`

createタスクの前提タスクとして、ディレクトリタスク(名前はdoc)を指定しないといけなかった。

“`ruby
directory “doc”

desc “create task”

元記事を表示

【Ruby on Rails】Rails Tutorialを全部終えたので、追加で「ストック機能」を実装してみた

#はじめに
Railsで「qiita」のような記事をストックする機能を実装したので、その方法を備忘録としてまとめておきます。
(基本的にはいいね機能と同じやり方)

※また、以下に記載する方法は前提として**「Rails tutorial」**を最後まで終えた程で記載させていただきます。

#実装すること
・記事をストックするボタンを作成する。
・記事がどれくらいストックされているか表示する。
・ストックした投稿をストック一覧ページで確認できるようにする。

#Stockモデルを作成する
ストック機能を実装するにあたって、最初のステップとして`Stockモデル`を作成します。

“`terminal
$ rails g model Stock
“`
カラムは2つ作成します。
・`post_id`カラム
・`user_id`カラム
マイグレーションファイルは以下のように修正します。

“`ruby:xxxxxxxxxxxxx_create_stocks.rb
class CreateStocks < ActiveRecord::Migration[6.0] def chan

元記事を表示

Jekyllで日本語カテゴリをデコードして表示

**2021/01/18追記:GitHub Pages上ではデコードが成功していない!原因が解消でき次第この文言は削除する。**

URLとエンコードの組み合わせで記事は多いが、Jekyllで作成した記事中のエンコードされた日本語文字列をデコードする話は見かけないので、ここにまとめておく。

## 環境と状況

– jekyll 4.2.0
– ruby 2.7.2p137 (2020-10-01 revision 5445e04352) [x64-mingw32]

Jekyllテーマのひとつ、[Minimal Mistakes](https://mmistakes.github.io/minimal-mistakes/docs/quick-start-guide/)では2021/01/17時点でベータ機能だが、breadcrumbs機能が使える。

>パンくずリスト(breadcrumb list)は、ウェブサイト内でのウェブページの位置を、ツリー構造を持ったハイパーリンクの一覧として示すもの。
[パンくずリスト – Wikipedia](https://ja.wikipedia.

元記事を表示

ページネーション機能(kaminari)

#はじめに
現在ポートフォリオ制作中の初学者です。
kaminariを導入してページネーション機能を実装したので備忘録です。

#1. gemをインストール

“`Gemfile:Gemfile
gem ‘kaminari’
“`

“`:ターミナル
% bundle install
“`
#2. コントローラーで定義

“`ruby:events_controller.rb
def index
@events = Event.page(params[:page]).per(10)
end
“`
__pageとperいうメソッドがkaminariで定義されたメソッドです。
perメソッドの引数にどれだけのレコードが表示されたらページを増やすかを指定できます。__

#3. ビューファイルを編集

“`ruby:events/index.html.erb
<%= paginate @events %>
“`
__表示したいビューファイルに記述。__

__以上です!__

#ページネーションの見た目を変える

kaminariで表示させるページネーションはビューの中で

元記事を表示

汎用性◯『戻る』ボタン

#はじめに
どんなページでも使える「戻るボタン」のコードを残しておこうと思い投稿します。

##汎用的戻るボタン
– Rails
– erb拡張子
– クラス名はお好みで
– CSSでクラス名を指定すれば、スタイルを適用可能

“`erb
<%= link_to '戻る', :back, class:"back-btn" %>
“`

`:back`の部分が、戻る機能に起因しています。

元記事を表示

AWS Lambdaでコンテナデプロイする方法

# はじめに
随分前になりますが、AWS Lambdaでコンテナデプロイがサポートされました。
[AWS Lambda now supports container images as a packaging format](https://aws.amazon.com/jp/about-aws/whats-new/2020/12/aws-lambda-now-supports-container-images-as-a-packaging-format/)

今回は、AWS Lambdaにコンテナのイメージをデプロイする方法について紹介します!

## 対象
– AWS Lambdaの新機能について知りたい人
– コンテナデプロイの流れを知りたい人

# YouTube動画
動画で確認したい方は、こちらを利用ください!
*撮影は1ヶ月以上前のものですが、大きく変わったところはありません。
[【YouTube動画】実践! Lambdaでコンテナデプロイをする方法!!](https://youtu.be/JNzOTwRsIoQ)
[![実践! Lambdaでコンテナデプロイをする方法!!

元記事を表示

[Ruby]文字列で使えるメソッド

##文字列の置換

– 文字列.sub(/変換した文字/,”置き換えたい文字列)・・・一番最初の文字のみ変換

“`
irb(main):026:0> str
=> “123123123”
irb(main):027:0> str.sub(/12/,”ab”)
=> “ab3123123”
irb(main):028:0> str
=> “123123123”
“`
12と言う文字をabと変換したらab3123123と置換された
ただしインスタンス自体は置換されていない

– 文字列.gsub(/変換した文字/,”置き換えたい文字列)・・・対応したすべての文字を変換
gはグローバルの意味

“`
irb(main):029:0> str.gsub(/12/,”ab”)
=> “ab3ab3ab3”
“`
これも同様にインスタンス自体は置換されない

– 文字列.sub!(/変換した文字/,”置き換えたい文字列)・・・元のインスタンス自体の一番最初の文字のみ変えてしまう

!は破壊的メソッド・・・インスタンス自体を変換してしまう

“`
irb(main):030:0>

元記事を表示

【Rails】SNSアプリにおけるリツイート機能の実装

現在就活用のポートフォリオとして、自分の好きな物をレビュー付きで共有できるRevoriteというSNSアプリを作成しています。
基本的な投稿機能やいいね機能などはググるとたくさんヒットしますが、リツイート機能に関する記事が少ないように感じたので、備忘録も兼ねてどなたかの参考になればと思い記事にしました。

# 前提
ユーザを管理する“`user“`モデル、投稿(ツイート)を管理する“`post“`モデル、フォロー・フォロワーの関係を管理する“`relationship“`モデルはそれぞれ作成済み

# モデルの作成
リポスト(当アプリではツイートではなく投稿(post)という言葉で統一しているため、以降リツイートではなくリポストと呼んでいます)を管理する“`repost“`モデルを作成します。

“`
$ rails g model repost
“`

“`YYYYMMDDHHMMSS_create_reposts.rb
class CreateReposts < ActiveRecord::Migration[5.2] def change cr

元記事を表示

seeds.rbなどでActiveStorageを使って大量の画像をアップロードする際に発生する SQLite3::BusyException の対処法

## 発生する問題

Railsの`rails db:seed`を実行すると、以下のようなエラーが起きる場合がある。

“`
$ rails db:seed
rails aborted!
ActiveRecord::StatementInvalid: SQLite3::BusyException: database is locked
/path-to-your-app/db/seeds.rb:69:in `


“`

### エラーが発生するコード例

エラーが発生した周辺のコードは次のようになっている。

“`ruby
# …

User.destroy_all

100.times do |n|
user = User.create!(
email: “sample-#{n}@example.com”,
password: ‘password’,
name: Faker::Name.name
)
image_url = Faker::Avatar.image(slug: user.email, size: ‘150×150

元記事を表示

Railsで簡単にサイトの雛形を作る

# サマリ
サイトをたくさん作れるようになりたいけど、どうやろうか?という疑問が浮かんだ。
そこで、いろんなチュートリアルサイトを見たけど、Railsでつかうscaffoldという機能が便利そうだったから、その実施をやってみる。

# プロジェクトの立ち上げ

## Ruby と Railsの導入
まずは、rubyとRailsをPCにセットアップする。
以下の記事を参考に実施した。(Mac)

[【完全版】MacでRails環境構築する手順の全て
](https://qiita.com/kodai_0122/items/56168eaec28eb7b1b93b)
上記の記事を参考にして一通りのインストールを行う。

振り返っての注意点だが、なるべく過去1年間に投稿された記事をなるべく参考にしたほうがいいと思う。
それ以上前だと、os自体のバージョンアップをまたいだりとうまく動かない可能性が出てくる。

## Railsプロジェクトの実行

“`shell
$ rails new scaffold_sample
$ cd scaffold_sample
$ rails generate

元記事を表示

【Rails】gem active_decoratorでコードを綺麗にまとめる

# 背景
・カラムの合計値や平均値といった計算をviewに書いていると、ごちゃごちゃしてきて読みにくくなってきたため。
・viewに書くのか、controllerに書くのか問題の解決のため

# 導入
まずはgemfileに追記します。

“`gemfile
gem ‘active_decorator’
“`

bundle installします。

“`terminal
$ bundle install
“`

# decoratorファイルの生成
次に、decoratorファイルを作ります。
今回はscoreというモデルに関するものです。
scoreの部分は好きな名前にして下さい。

“`terminal
$ rails g decorator score
“`
そうすると、このようなファイルを生成してくれます。
`app/decorators/score_decorator.rb`

今回はゴルフのスコアだったので、18Hの合計を計算させます。

“`
module ScoreDecorator
def total_score
format(‘%+d

元記事を表示

Rubyのconfigure時のオプション知りたかったら `RbConfig::CONFIG[“configure_args”]` をみる

## tl;dr

– crubyのconfigure時のオプション知りたかったら `RbConfig::CONFIG[“configure_args”]` をみる。

## 環境

“`console
$ uname -mrv
4.15.0-124-generic #127-Ubuntu SMP Fri Nov 6 10:54:43 UTC 2020 x86_64
$ cat /etc/issue
Ubuntu 18.04.5 LTS \n \l

$ rbenv –version
rbenv 1.1.2-34-g0843745
$ ruby -v
ruby 2.5.8p224 (2020-03-31 revision 67882) [x86_64-linux]
“`

## 本題

rbenvで入れたバイナリでdpkg-shlibdepsかけたらなんか言われた。

“`console
$ pwd
/home/kubo39/.anyenv/envs/rbenv/versions/2.5.8/bin
$ mkdir debian;touch debian/control
$ d

元記事を表示

[Rails]ぱんくずリスト機能について

# はじめに

今度はぱんくず機能を実装復習しましたのでまたすぐ実装できるように

記していきたいと思います。

実装していきます。:fire::fire:

# ぱんくず機能とは

現在どこのページにいるのかを視覚的にわかりやすくした表示できる機能ことです。

物語の「ヘンゼルとグレーテル」のなかで、ヘンゼルとグレーテルの二人が森の中で道に迷わないように歩きながら来た道の目印にぱんくずを落としていったことから”ぱんくず機能”で、gemの名前が「gretel」なのだそうです。

可愛いですね :bread:

ちなみに、ヘンゼルは男の子の方でグレーテルは女の子です。:couple:

[[gem gretel] 詳細](https://rubygems.org/gems/gretel?locale=ja)

# 実装

「gretel」というgemを「Gemfile」に記述し

“`ruby:Gemfile

gem ‘gretel’

“`

インストールします。

“`ruby

bundle install

“`

こちらを入力すると「config」ディレクトリの下に「

元記事を表示

OTHERカテゴリの最新記事