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

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

SHIRASAGI(シラサギ)について

初めての記事のため、不十分な記事かも知れませんが
最後まで読んでいただければ幸甚です。

さて、初めての記事はOSSのSHIRASAGI(シラサギ)についてです。
シラサギについて調査した内容を記事にさせていただきます。
[シラサギのWebサイト](https://www.ss-proj.org/)を参照させていただきました。

#シラサギとは
シラサギは、日本で生まれたOSSです。
Ruby, Ruby on Rails, Mongo DBで動作する中、大規模向けのCMSです。
OSはUbuntu, CentOSです。
ライセンスはMIT License

図書館や市役所のWebサイトといった公共サイトに
多く利用されているOSSです。

機能も広告カレンダーや施設機能などといった
嬉しい機能も多く搭載されています。

#シラサギの強み CMS
CMS(コンテンツ管理システム)はWebサイト作成にあったて非常に便利な機能です。
Webサイト作成する際に必要なHTMLの知識なども不要でサイトを作成することが可能です。
作成した後、管理者に申請してOKが出れば公開できるという
チームみん

元記事を表示

S3設定

この記事は初学者が作成した物です。

# 前提知識

AWSのS3を使う際に行うセキュリティー対策。
セキュリティー対策を怠った場合
AWSのID&PWが漏れてしまい膨大な金額を請求される恐れがある。
その為にも、セキュリティー面をしっかりと意識しよう

### セキュリティー対策①
二段階認証

AWSをログインする際にAuthyを利用し
従来のID&PWだけでなく30秒事に変わる数列を作成することができます

###セキュリティー対策②
IAMユーザー

IAMユーザーをは、ルートユーザーから一定の権限を与えられたユーザーです。
たとえハッキングを食らっても余計なことができないようにする為の対策です。

###セキュリティー対策③
Githubにコードを載せない。

git secrets –register-aws –global

上記のコマンドは、git secretsをインストールした際にあらかじめ用意されているコマンドの一つです。
git secrets –register-aws で自力で細かな設定をすることなくAWS向けのcommit検査設定を導入することができ

元記事を表示

Rails Tutorialの知識から【ポートフォリオ】を作って勉強する話 #16 線グラフ, Chartkick編

# こんな人におすすめ
* プログラミング初心者でポートフォリオの作り方が分からない
* Rails Tutorialをやってみたが理解することが難しい

前回:[#15 投稿機能, Active Storage編](https://qiita.com/aokyo17/items/8769ecff3b7c08dca70b)
次回:準備中

# 今回の流れ
1. 完成のイメージを理解する
* Chartkickを理解・導入する
* 各メソッドを作る
* コントローラを編集する
* ビューを作る

この記事は、**動画を観た時間を記録するアプリのポートフォリオ**です。
今回は**入力したフォームからグラフを表示**します。

# 完成のイメージを理解する
今回はフォームから入力された時間を、日付別に取り出し、合計したものを**「週間・月間・年間」でグラフに表示**できるようにします。

そのためにはグラフを描画するgem、Chartkickを使用します。
**「週間・月間・年間」の切り替えには、ドロップダウンからクエリパラメータを送信・取得**します。

完成するとこんな感じです↓
![

元記事を表示

【Rails】Rspecを利用したテストコードとマッチャについて

RSpecを利用したテストコードの記述を学習する中で得た知見の記録を目的とした記事です。

#まずRspecとは
Rubyコードをテストする為にRubyで記述された「ドメイン固有言語」テストツールです。
Railsでは「`rspec-rails`」という`Gem`を導入する事で、使用出来るようになります。
※この記事ではRspecの導入方法については触れません。

導入の目的は、テストコードが設計である事をプログラマーが意識する事と、テストコードの記述をスムーズに行う為です。

#Rspecのディレクトリ構造
RSpecで書かれたテストコードのファイルをspecファイルと呼びます。
アプリケーションのappディレクトリ以下にあるテスト対象となるモデルやコントローラーの位置に
対応させる形で、specフォルダ以下にディレクトリを配置します。

例:
`spec/models/
spec/controllers/`

また、specファイルの命名規則として、**対応するクラス名_spec.rb**と設定する必要があります。

# テストコードについて
前置きが長くなりましたが、テストコード

元記事を表示

【Ruby初心者向け】バイトの日給を計算し、1万以下ならもっと頑張らせるアプリ

#バイトの時給と労働時間を計算し、1万以下なら明日は死ぬ気で頑張れと言ってくれるアプリ

#条件
・時給を入力
・労働時間を入力
・日給1万以上なら、日給額と頑張ったねと表示させる
・日給1万未満なら、日給額と明日は死ぬ気で頑張れと表示させる

#擬似コード

“`
puts “時給を入力してね”
hw = 時給を入力させる

puts “何時間働いたかを入力してね”
wt = 労働時間を入力させる

if 1万以上なら日給額と、頑張ったねと表示
else
1万未満なら日給額と、明日は死ぬ気で頑張れと表示
end
“`

※時給=hourly wage
※労働時間=working time
※日給=daily salary

#実際にコーディングしてみる
“`
puts “時給を入力してください”
hw = gets.to_i

puts “労働時間を入力してください”
wt = gets.to_i
#時給を計算
ds = hw * wt

if ds >= 10000
puts “あなたの日給は#{ds}です、頑張りましたね。”
else

元記事を表示

【Rails】Gemのバージョンエラー「Bundler could not find compatible versions for gem」が出てきたときの対処法

#エラー発生
Railsチュートリアル10章の10.3.2「サンプルのユーザー」で「リスト10.42: GemfileにFaker gemを追加する」で以下のようにgemを追加した。

“`:Gemfile
source ‘https://rubygems.org’

gem ‘rails’, ‘5.1.6’
gem ‘bcrypt’, ‘3.1.12’
gem ‘faker’, ‘1.7.3’
“`

そしてbundle installすると、以下のエラーが発生。

“`
Warning: the running version of Bundler (2.0.2) is older than the version that created the lockfile (2.1.0). We suggest you upgrade to the latest version of Bundler by running `gem install bundler`.
The dependency tzinfo-data (>= 0

元記事を表示

Rubyの環境構築ーMac

###1. rbnevをインストール

Homebrewを使ってrbenvをインストール

##### ⑴ Xcodeを入手
“`$ xcode-select –install“`
※ Homebrewを使うために「Command Line Tools for Xcode」が必要

バージョンが表示されたらインストール成功
※ 表示されない場合はApp StoreでXcodeをインストールしてみる
“`$ xcodebuild -version“`

##### ⑵ Homebrewをインストール

[外部リンク](https://brew.sh/index_ja)からインストールスクリプトを入手し、コマンドを実行する。

正常にインストールされているか確認。
“`$ brew doctor“`
「Your System is ready to brew」と表示されればOK

##### ⑶ rbenvをインストール
次のコマンドを実行
“`$ brew install rbenv“`

rbenvコマンドが使えるようにするため、パス設定と初期化処理を.zprofil

元記事を表示

Ruby 破壊的メソッド 非破壊的メソッド

#破壊的メソッド、非破壊的メソッドって??

##1.破壊的メソッド
オブジェスト自体を変更するメソッドである。
それ以降、オブジェクトは、変更された状態が続く。

##2.非破壊的メソッド
オブジェクト自体を変更した場合の値を返すメソッド
以降のプログラム上では、値は元のまま

##3.例
例として、
小文字→大文字の破壊的メソッドのupcase!
小文字→大文字の非破壊的メソッドのupcase

~~~Ruby
str = “abc”
str.upcase!
puts str
~~~

実行結果

~~~
ABC
~~~

~~~Ruby
str = “abc”
puts str.upcase
puts str
~~~

実行結果

~~~
ABC
abc
~~~

元記事を表示

[Rails]「×××_path」ってどう編集すればいいの?

#経緯

オリジナルアプリ作成に伴いログイン機能を実装しました。

その際、ログイン後にアクセスしたいページに遷移することができず、かなり時間をとられたので備忘録的に書き残します。

#該当箇所

“`rb:controrllers/application_controller.rb

class Users::SessionsController
def after_sign_in_path_for(resource)
XXXX_path #ご自身のpath
end
“`

#詰まった理由

・「×××_path」が何を表すのか分からなかった。

・「×××」に何を入れればいいか分からなかった。

#分かったこと

・「×××_path」が何を表すのか分からなかった。
→ **サインインした後に表示したいパス(URL)**

・「×××」に何を入れればいいか分からなかった。
→ **rails routesした際のPATHを入力**
(※今回は赤線部分「bustersコントローラー」の「indexアクション」に紐づくViewをログイン後に表示したいので、

元記事を表示

rails: strftimeで0を表示させたくない時

### やりたいこと
__例__
2019年04月21日

“`ruby
birthday.strftime(‘%Y年%m月%d日’)
=> ‘2019年04月21日’
“`
__04__がデザインによって不格好で表示させたくないとき

__表示させたい日時の表記__
2019年4月21日

“`ruby
birthday.strftime(‘%Y年%-m月%d日’)
=> ‘2019年4月21日’
“`

“%-m“とすることで0が表示されなくなる。

元記事を表示

二次元配列とは

# 配列とは?
配列とは、複数のデータを格納することが出来るクラスのオブジェクトの事である。
![配列.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/520383/ff02402e-20a4-6101-a105-47f66cbbd086.png)

配列の場合、上記のイメージのように0番目からデータを入れる事によって複数のデータを格納することが出来る。
配列の各要素を取得するには、下記のように[]と添字(インデックス)を指定する。

“`ruby:添字の要素を取り出す
配列オブジェクト[添字]
“`

# 二次元配列
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/520383/6d43e717-cac9-9eaf-2430-fc1c13165653.png)
二次元配列は上記の様なイメージで1番に入った2つもさらにインデックス番号が与えられる。

“`ruby:ニンジンを出力する
foods[1][

元記事を表示

Rails6でJavaScriptを使う方法

# はじめに
Rails6のアップデートで、JavaScriptを設置する場所や設定方法がRails5以前とは変わったので、Rails6でJavaScriptを使う方法について書きます。

## この記事に書いてあること
– Rails6でJavaScriptを使うには、具体的にどのようなコードを書けば良いのか

## この記事に書いていないこと
– Webpackerとは
– アセットパイプラインとは
– Ajaxとは

# Rails6でJavaScriptを使う方法

## Viewの設定
例として、`app/views/home/index.html.erb`を作成して以下のように記述します。

“`index.html.erb

Hello World

<%= javascript_pack_tag 'home/index' %>
“`
`javascript_pack_tag ‘home/index’`の意味は、「`app/javascript/packs/home/index.js`を読み込んでね〜」という意味です。

## J

元記事を表示

各種 Web Application Framework メモリ使用量比較調査 (Go, Ruby, Python, Node.js, Java)

## 概要

– 「Hello World な HTML を返す程度の Web アプリケーション」または「それぞれの公式ドキュメントに載っているチュートリアルの初期状態に近いもの」を作成してメモリ使用量を比較する
– Web アプリケーションサーバは現時点でよく使われていると思われるものを使用する
– テンプレートエンジンはフレームワークのデフォルト設定またはフレームワークが推奨しているものを使用する
– macOS Catalina 上でメモリ使用量を計測
– メモリ使用量の計測には ps コマンドの RSS 値を使う (複数のプロセスを使うものはRSS値を単純に足したものをメモリ使用量とした。メモリ共有部分については考慮していないため、もう少しメモリ使用量が少ないかもしれない)

## 調査結果

メモリ使用量が少ない順に並べる。

– 7MB: Go 1.13 + Gin 1.5
– 10MB: Go 1.13 + Revel 0.21
– 24MB: Ruby 2.7 + Sinatra 2.0 + Puma 4.3
– 40MB: Python 3.8 + Flask 1.1

元記事を表示

form_withでデフォルトのデータ送信先を変更する[Rails]

ポートフォリオアプリを作っています。
作品の一覧と各作品の詳細は誰でも見られるようにしようと思いますが、作品の投稿と編集は管理者だけができるようにしたいと思います。

管理者ユーザーの作成は、過去の自分のこちらの記事を読んで実装できたのですが、

[【初心者向け】管理者ユーザーと管理者用controllerの追加方法[Ruby, Rails]][1]
[1]:https://qiita.com/tanutanu/items/7ce8826615f1af605164

その後、管理者ユーザーの投稿機能をつけ、submitボタンを押したときに、以下のようなエラーが出ました。

[![Image from Gyazo](https://i.gyazo.com/e987d1db32f9084329e6e98e980551c6.png)](https://gyazo.com/e987d1db32f9084329e6e98e980551c6)

何、`/works`に**POST**メソッドでつながるルーティングがないそうです。
確かに、`rake routes`で確認してみると、管理者ユーザーが

元記事を表示

Ruby on Rails にdeviseを使ってログイン機能を導入する

書きつくされているRuby on Railsにdeviseを導入する記事ですが、ひとそれぞれ目的が微妙に違うのか躓いてしまいます。

そこで僕の無知から来るミスも含めて共有し、同じ過ちを皆様に犯さないでいただけるのなら記事を書いたかいがあります。
また、よりよい方法があると思いますが、ご参考にしていただければと思います。

それではいきましょう!

## 環境
・macOS
・Ruby 2.7.0
・Ruby on Rails 6.0.2

## もくじ
1.Railsのプロジェクトを作成する
2.簡単な画面遷移を作る
3.ログイン機能を実装する(ここでdeviseが登場)

## 1.Railsのプロジェクトを作成する
まずはアプリを開発するディレクトリを作成する。

“`
$ mkdir app_name
$ cd app_name
“`

その後のプロジェクトの作成方法は以下を参照してください。
https://qiita.com/tom-ohiro/items/0030999b838bfe05006dak

## 2.簡単な画面遷移を作る(トップページの作成)
この工

元記事を表示

【Rails】Rspec何言ってるか解読してみた件。コントローラー#index編

今回は、写真とタイトルを投稿するアプリケーションの**tweetsコントローラーのindexアクション(トップページを表示する)が問題なく動くかどうか**、Rspecという言語を使ってテスト。

##テストする内容は2つ。
1. **tweets_controller.rb内でindexアクションの定義文で生成した@tweetsに、意図したものが入っているかな?**

“`ruby:tweets_controller.rb
def index
@tweets = Tweet.includes(:user).page(params[:page]).per(5).order(“created_at DESC”)
end
“`
1. **テスト環境上で、indexアクションを起こすリクエストを飛ばして、indexアクションに対応したビューが返ってくるかな?**

##コントローラーのテストの際は、2つの点に注意。
①tweets_controller.rbにおいて、テストしたいアクションに対し、before_actionが定義されていないこと。
②gem rails-co

元記事を表示

Ruby on railsとDjangoの違いまとめ~基礎編~

##1. はじめに
 プログラミングを始めて4ヶ月の初心者です!
Ruby on railsとDjangoを勉強中なので、
アウトプット(備忘録)として、その基礎的なコードの違いを書いていきたいと思います!!:pencil2::beginner:
railsから学習を始めていることから、
基本rails目線で、Djangoの場合はどうか?という目線で書いております:smile:
少しでも、ご参考になりましたら幸いです。
(勉強中なので、随時追記・修正していく予定です!)

##2. MVCモデル(Rails)MTVモデル(Django)
“View”の名前が被っているので、ややこしい感じがしますが、大まかな流れは同じです。
自分のイメージを以下に示します。
スクリーンショット 2020-01-04 20.46.48.pngRailsでiOSアプリのURI スキームに対応する

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/110571/3a89bb3e-bb83-12f1-415d-c5178bac8563.png)

> 一瞬「あれっ…」ってなったので備忘録

# TL; DR
– `routes.rb`内でダイレクトルーティングで定義すればOK

# バージョン
– Ruby:2.6.1
– Rails:5.2.3

> タイトルにiOSと書いてますがAndroidも対応できます。ただのRoutingの話なので。

# やりたいこと
– RailsがWebとモバイルアプリの両方のサーバサイドの役割を担っている
– モバイルアプリ内で、特定の画面に遷移させるURIスキームを使いたい
– メニューなどで表示されていないページへの遷移など
– 上記の例としてInstagramに「運営からのコメント」があり、チャットで操作説明を受ける画面に遷移させたいような目的があったとする
– ヘルパーリンク:`qa_chat`
– URIスキーム:

元記事を表示

FizzBuzzの問題を外部入力した数値から数えるアプリケーションを作ってみた

# 通常FizzBuzzの問題は、1~100までを数えるものが多いみたいですが、今回はgets.to_iを使用し、入力した数を(含めて)から30数えるアプリケーションを作ってみる

#目的
 ・学習のため
 ・入力した数値からFizzBuzzできたら面白そうだと思ったから

#下記条件を満たすように作る
 ・外部入力させる
 ・入力させた数値を含めて、そこから30数える
 ・3の倍数の場合はFizzと表示させる
 ・5の倍数の場合はBuzzと表示させる
 ・15の倍数の場合はFizzBuzzと表示させる
 ・「数値を入力してください」と表示させた後に、入力させる
 ・数値を入力させた後は、改行させるか、文字をいれる(ターミナル上で見栄え良くするため)

#擬似コードを書く

“`
puts “数え始める開始の数値を入力してください”
x = 数字を入力させる
puts “下記に入力した数値を含めて30数えます”
y = 30数えるため、外部入力させた数値に30を足す

xから(30数える=y)each do|i|
※ここから先はいつものFizzBuzzと一緒
if ○○なら

元記事を表示

「文言」ruby出力に挑戦

## はじめに
漢文風プログラミング言語「文言/wenyan-lang」は、初期commitが2019年12月という新しい言語で、現在進行形で開発が進んでいます。その美しいレンダリングは漢字圏に住む我々日本人としても目の離せない言語です。

初期時はハードルが高めでしたが、現在はnpmからインストールし簡単に使い始められます。まだの方は[こちら](https://qiita.com/libru1/items/6542b45a945fc7fe10cf)の記事を参考に今すぐインストールしてみて下さい

この記事では「文言/wenyan-lang」で書かれたプログラムからrubyソースに変換し、実行してみます

### 動作確認
こちらの記事の確認環境は以下の通りです

> npm v6.13.4
wenyan v0.2.0

## 実行

[公式](http://wenyan-lang.lingdong.works/)を見ると
Screen Shot 2020-01-04 at 1.24.14.png

  • OTHERカテゴリの最新記事