- 投稿日:2019-07-14T21:00:40+09:00
Rails newするときの流れ
新しくRailsプロジェクトを作る時の流れをメモとしてざっくり残しておきます。
- Railsをインストール -
$ mkdir ○◯◯ $ cd ◯◯◯ $ bundle init
bundle init
によりGemfileが作成されるので、Gemfileを編集。Gemfile# frozen_string_literal: true source "https://rubygems.org" git_source(:github) {|repo_name| "https://github.com/#{repo_name}" } gem "rails" #ここのコメントアウトを外すそしたら、
$ bundle install --path vendor/bundle
。
--pathでパスを指定することによって、指定されたパスにRailsがインストールされる。- Rails new する -
bundle exec rails new . -B -d mysql -T
Rails new。
Overwrite /Users/apple/Desktop/App/Gemfile? (enter "h" for help) [Ynaqdhm]
と、Gemfileを上書きしていいか聞かれるので、Yes。
Rspecを使いたいのでテストはスキップ。- DBを作成する -
usernameとpasswordを指定。
config/database.ymldefault: &default adapter: mysql2 encoding: utf8 pool: <%= ENV.fetch("RAILS_MAX_THREADS") { 5 } %> username: #ユーザー名 password: #パスワード socket: /tmp/mysql.sockターミナルで
$ bundle config --local build.mysql2 "--with-cppflags=-I/usr/local/opt/openssl/include" $ bundle config --local build.mysql2 "--with-ldflags=-L/usr/local/opt/openssl/lib"この二つのコマンドを実行し、もう一度
bundle install
します。そして
bin/rails db:create
。上記の2つのコマンドを入力してbundle installという工程を飛ばすとエラーが出ます(自分の環境だと)。
- Rspecの設定をする -
Gemfile・・・ group :development, :test do gem 'rspec-rails' #それぞれ、必要があればバージョン指定をする。 gem 'factory_bot_rails' gem 'spring-commands-rspec' end ・・・Gemfileに上記の3つを追加し、
bundle install
。
$ bin/rails generate rspec:install
RSpecをインストール。.rspec--require spec_helper --format documentation #この行を追加するとテストを実行した際にログが読みやすくなる。次は
$ bundle exec spring binstub rspec
。
このコマンドを打つとbin/rspec
コマンドでテストが実行できるようになる。config/application.rbmodule Test class Application < Rails::Application ... config.generators do |g| g.test_framework :rspec, fixtures: true, view_specs: false, helper_specs: false, routing_specs: false, request_specs: false end ... end end上記の行を追加。
これでRSpecのセットアップは完了です。- Slimを導入する -
Gemfile... gem 'slim-rails' gem 'html2slim'
bundle install
でgemをインストール。
bundle exec erb2slim app/views/layouts --delete
erbファイルを削除。- Bootstrapをインストール -
Gemfilegem 'bootstrap;
bundle install
。
$ rm app/assets/stylesheets/application.css
sassを使うために、application.cssを削除。
application.scssを作成し、application.scss@import 'bootstrap';追加。
- i18nで日本語化 -
$ wget https://raw.githubusercontent.com/svenfuchs/rails-18n/master/rails/locale/ja.yml --output-document=config/locales/ja.ymlrawファイルをja.ymlにダウンロード。
config/initializers下にlocale.rbファイルを作成。config/initializers/locale.rbI18n.load_path += Dir[Rails.root.join('config', 'locales', '**', '*.{rb,yml}').to_s] I18n.config.available_locales = :ja I18n.default_locale = :jaこれで完了です。
- 終わり -
こんな感じで一通り終了です。
いつも忘れてしまうので、ザックリまとめてみました。
ここをこうした方が良いよとか、アドバイスがあったら教えていただけると嬉しいです。
- 投稿日:2019-07-14T16:42:50+09:00
[PHP初心者]プログラミング歴2ヶ月目の僕が簡易掲示板を作るまでの軌跡
はじめに
こんにちは。てりーと申します!
プログラミング歴が4ヶ月目に入ろうとしているエンジニアです。今回は完全初心者だった僕がPHPで簡易掲示板に作るまでにやったことをまとめました。
所謂「やり方をまとめました!」という形式ではなく「PHPを作るまでの形跡を記録したもの」になっているので、読み物として消化してくれると幸いです。
ツイッターアカウント
https://twitter.com/teriteriteriri環境
PHP7.2
MAMP製作者の当時のレベル
プログラミング歴1ヶ月
progateでレベル100(これしかやってない)完成物
github
https://github.com/gunners6518/athena_board2付けた機能
✓アカウントの新規作成ができる
(ニックネーム、メアド、パスワードを入力する)
✓ログインができる(メアドとパスワードで認証する)
✓ログインしたあとであれば書き込みができる
✓書き込みのとき、ニックネーム、投稿内容、投稿日時をデータベースに保
存する
✓ログインしている・していないに関わらず、他の人が書いた書き込みが見
られる
✓書き込んだ人は、自分の書き込みを消すことができる
✓ソースコードをgithubで管理するやった事
1 MAMPのインストール
参考:https://qiita.com/kuro-wassan/items/1cb32995acc07a4b4cc6
参考の通りにやった所、1時間程度でインストールできました。
環境設定がスムーズにいって幸先良くてテンション上がりました!2 ドットインストールの「PHPで作る簡易掲示板」で挫折
https://dotinstall.com/lessons/bbs_php_v2
まずはみんな大好きドットインストールで掲示板を作ろうとしました。
進捗が33%辺りのところで.datファイルが出てきてついていけなくなって挫折しました!3 自力ではできないと悟り、mentaに契約
ドットインストールで挫折して、何から勉強していけば良いのか分からなくなり、教えてくれる人を着ける事にしました。
使ったサービスはmenta!!
https://menta.work/
3000円ほどでslackで質問し放題のプランで現役のエンジニアの方をメンターにつけました。結果としてこの選択が僕のプログラミング人生を軌道に乗せました!
4 メンターに従ってPHPとmysqlの接続完了
PHPとmysqlを接続する事で、フォームから送った投稿がDBに保存されるようになります。
データベースへ掲示板テーブルを作成
phpmyqdminにて掲示板テーブルを作成しました!
掲示板記事入力画面の作成
bootstrapを主に使って掲示板のフロントの部分を整えて行きました!
といっても、いいなーと思うサンプルコードを写経して色とか場所などをちょっといじる感じで対応しました。記事入力画面から登録ボタンをクリックしたタイミングでデータベースの掲示板テーブルへデータ登録
ここで完全にphpとmysqlを接続するフェイズですね!
振り返るとここが初期の難関だったなーと思います。データベースに飛ばすとエラーが出ちゃう日々を1週間ぐらい過ごしました!
・https://qiita.com/tabo_purify/items/2575a58c54e43cd59630
・http://www.php-labo.net/tutorial/example/message_mysql.htmlここら辺の記事を参考にしつつ、メンターの方と試行錯誤しながらどうにかこの壁を超えました!
5 記事一覧ページの作成
PHPとmysqlを接続した事で、投稿した記事がDBに保存されるようになりました。
今度はDBの投稿一覧がwebから見られるようにして、それらを編集できる機能を付け加えました。登録したデータの一覧表示
ここでSQL文のSELECTを使うことで指定したDBのテーブルからデータを取ってきます。
この記事を参考にして汚いけど、どうにか投稿データの取得に成功しました!!(IDがうまく振れてませんでした!)
https://gray-code.com/php/getting-data-by-using-mysqli/
一覧から編集ボタンをクリックして対象データの編集画面を表示(新規と同じような内容)→更新
この機能はSQL文のUPDATEを使いました。
参考記事はこちらです!
https://gray-code.com/php/update-data-by-using-mysqli/一覧からの削除ボタンクリックで一覧から対象データを削除
参考記事はこちらです。
https://gray-code.com/php/delete-data-by-using-mysqli/6 udemyを参考にして仕上げ
こちらを参考にしてコードをシンプルにして行きました!
これだけ写経しても掲示板が作れるぐらいの優れもの!!
分かりやすくまとまってる、復習用にも使えます。https://www.udemy.com/php7basic/
まとめ
プログラミングを学ぶにあたり、最初はフレームワークを使わずにphpのベタ書きで簡易掲示板を作っていきました!
制作期間は2ヶ月ほど(2019年4-5月)。
プロゲートしかやった事ない初心者でしたが、スクールとかに通わなくても、mentaにサポートして貰いながら独学ベースで掲示板を作る事が出来ました!!
現在はそこからLaravelなどのフレームワークを使って実際にwebーサービスの開発などにも挑戦しています。
最後までご拝読ありがとうございました。
- 投稿日:2019-07-14T16:20:23+09:00
MySQLの起動時に ERROR! The server quit without updating PID file のエラーが発生する
事象
MySQLを起動しようとするとエラーが発生する。
$ mysql.server start ERROR! The server quit without updating PID file (/usr/local/var/mysql/[pc名].pid).対応内容
ファイルが存在するか確認する。
$ ls /usr/local/var/mysql/[pc名].pid ls: /usr/local/var/mysql/MacBook-Air-3.pid: No such file or directoryファイルが存在しないため、ファイルを作成する。
touch /usr/local/var/mysql/[pc名].pidファイル作成後に再起動し、再度MySQLを起動する。
$ mysql.server start Starting MySQL .. SUCCESS!起動しました。
- 投稿日:2019-07-14T11:01:30+09:00
MySQLの基本(データベースの操作)2
前回の続きです。
enum 複数の文字列から一つだけ格納する
カラム作成時に、'カラム名' enum('文字列1' , '文字列2' , '文字列3')とすると
レコード作成時にenumで宣言した値でのみ格納できるようになる。
宣言した値は文字列だけでなく連番で管理される。create table users ( id int unsigned primary key auto_increment, name varchar(20), score float, rank enum('gold','silver','bronze') ); insert into users (name, score,rank) values ('taguchi', 5.8,'gold'); insert into users (name, score,rank) values ('fkoji', 8.2,'silver'); insert into users (name, score,rank) values ('dotinstall', 6.1,'bronze');set 複数の文字列から複数格納する
カラム作成時に、'カラム名' enum('文字列1' , '文字列2' , '文字列3')とすると
レコード作成時にenumで宣言した値でのみ格納できるようになる。
宣言した値を複数選択可能。
宣言した値は文字列だけでなく連番で管理される。(最初の値には 2 の 0 乗の 1 、次が 2 の 1 乗の 2 、次が 2 の 2 乗の 4 、といった具合で値を保持)drop table if exists users; create table users ( id int unsigned primary key auto_increment, name varchar(20), score float, coins set('gold','silver','bronze') ); insert into users (name, score, coins) values ('taguchi', 5.8, 'gold,silver'); insert into users (name, score, coins) values ('fkoji', 8.2, 'silver,bronze'); insert into users (name, score, coins) values ('dotinstall', 6.1,'bronze,gold');if と case 条件分岐でデータを抽出する
if 使い方例)
データ抽出時にselectでifを使用することで条件に応じたカラムを生成し抽出できる。create table users ( id int unsigned primary key auto_increment, name varchar(20), score float ); insert into users (name, score) values ('taguchi', 5.8); insert into users (name, score) values ('fkoji', 8.2); insert into users (name, score) values ('dotinstall', 6.1); insert into users (name, score) values ('Tanaka', 4.2); select name, score, if (score > 5.0, 'OK', 'NG') as result from users; >実行結果 +------------+-------+--------+ | name | score | result | +------------+-------+--------+ | taguchi | 5.8 | OK | | fkoji | 8.2 | OK | | dotinstall | 6.1 | OK | | Tanaka | 4.2 | NG | +------------+-------+--------+case 使い方例)
データ抽出時にselectでcaseを使用することで条件に応じたカラムを生成し抽出できる。
whenの後に直接条件を書くことができる。create table users ( id int unsigned primary key auto_increment, name varchar(20), score float ); insert into users (name, score) values ('taguchi', 5.8); insert into users (name, score) values ('fkoji', 8.2); insert into users (name, score) values ('dotinstall', 6.1); insert into users (name, score) values ('Tanaka', 4.2); select name, score, case floor(score) % 2 when 0 then 'even' when 1 then 'odd' else null end as type from users; >実行結果 +------------+-------+------+ | name | score | type | +------------+-------+------+ | taguchi | 5.8 | odd | | fkoji | 8.2 | even | | dotinstall | 6.1 | even | | Tanaka | 4.2 | even | +------------+-------+------+抽出結果をテーブルにする
select fromでデータ抽出を行う分の前にcreate tableを使用することで、条件指定で抽出したカラムを含む新たなテーブルを作成できる。
create table users ( id int unsigned primary key auto_increment, name varchar(20), score float ); insert into users (name, score) values ('taguchi', 5.8); insert into users (name, score) values ('fkoji', 8.2); insert into users (name, score) values ('dotinstall', 6.1); insert into users (name, score) values ('Tanaka', 4.2); create table '作成するテーブル名' select id, name, score, case when score > 8 then 'teamA' when score > 6 then 'teamB' else 'teamC' end as team from users; select * from users_with_team; >結果 +----+------------+-------+-------+ | id | name | score | team | +----+------------+-------+-------+ | 1 | taguchi | 5.8 | teamC | | 2 | fkoji | 8.2 | teamA | | 3 | dotinstall | 6.1 | teamB | | 4 | Tanaka | 4.2 | teamC | +----+------------+-------+-------+
- 投稿日:2019-07-14T10:54:20+09:00
SQL Error [08001]: Public Key Retrieval is not allowedの対処法 [JDBC:MySQL]
ローカル環境
・データベース:MySQL 8.0.16
・言語:Java
・JDBCドライバ:mysql-connector-java-8.0.16
・DB参照ツール:DBeaverDB接続しようとしたら、複数のエラーが発生
JavaからDB接続しようとしたところ、突如繋がらなくなった。
eclipseのコンソールでは下記のエラー記述が。com.mysql.cj.jdbc.exceptions.CommunicationsException: Communications link failure The last packet successfully received from the server was 25 milliseconds ago. The last packet sent successfully to the server was 28 milliseconds ago.DBeaverからも接続を試みると、下記のエラー記述が。
SQL Error [08001]: Public Key Retrieval is not allowed検索をかけて下記の記事を見て解決できました。
https://stackoverflow.com/questions/50379839/connection-java-mysql-public-key-retrieval-is-not-allowedJDBCドライバのプロパティ「allowPublicKeyRetrieval」をtrue、「useSSL」をfalseにする
DBeaver:
1. 「データベースナビゲータ」の該当接続を右クリックし、「編集 Connection」を押す。
2. 「接続設定」 > 「ドライバのプロパティ」を選択。
3. 「allowPublicKeyRetrieval」をtrueに変更。
4. 「useSSL」をfalseに変更。(ちなみに自分は元々falseになっていたので対応不要だった)
5. 「OK」を押す。Javaコード:
1. データベース接続文字列に「allowPublicKeyRetrieval=true&useSSL=false」を追加。
<記入例>sample.javaString database = "jdbc:mysql://localhost:3306/sample_db?allowPublicKeyRetrieval=true&useSSL=false";
- 投稿日:2019-07-14T00:11:19+09:00
MySQLの起動からユーザ作成&権限付与まで
この記事の内容
初めてMySQLを触ったので備忘録
以下3つの内容に関して記載する
・MySQLを立ち上げる
・ユーザーを作成する
・権限を付与する環境
mysql: ver 8.0.16 for osx10.13 on x86_64 (Homebrew)
OS:MacOS HighSierra 10.13.6MySQL立ち上げ
インストール部分は省略(Homebrewでインストール可能)
ターミナルを起動して以下のコマンドを入力してmysql.serverを立ち上げるmysql.server start以下の内容が表示されれば起動成功
Starting MySQL .. SUCCESS!次にmysqlに接続
現在ユーザーは作成していないため管理ユーザー-rootで接続するmysql -uroot以下のように
>mysqlと表示されれば接続成功
なお、接続を解除する方法はいくつか存在して、いずれかのコマンドを実行する>mysql quit >mysql exit >mysql \qユーザーを作成する
現在はrootでログインしているので、新規にユーザを作成する
ユーザーを新規に作成するためには以下のコマンドを入力する'user'はユーザ名
'localhost'はホスト名
'password'はパスワードCREATE USER 'user'@'localhost' IDENTIFIED BY 'password";以下のコマンドでユーザ一覧を表示できる。
作ったユーザーが一覧に存在していれば作成成功SELECT user,host FROM mysql.user作成したユーザーでログインするためには以下のコマンドを実行
mysql -u user -pそうするとpasswordの入力を求められるので先ほどのpassを入力することでログイン可能
現在ログインしているユーザを確かめるには以下のコマンドを実行SELECT user()ログインの際に用いたuserが表示されていればログイン成功
権限を付与する
作成したユーザーは何も権限を持たないため、権限を付与する。
権限は細かに設定可能であり、データベース、テーブル単位で設定も可能
今回は全ての権限を与えるよう設定する。GRANTのコマンドを使用するのだが、ググったサイトの大半のサイトに記載されてる内容ではうまくいかなかった。
おそらくMySQLのバージョンアップにともないコマンドの仕様が変更されたのではないかと考えられる。以下のコマンドで全ての権限をuserに付与可能
database名,table名にはアクセスを許可したいものを入力する
database名,table名にはワイルドカード[*]も使用可grant all privileges on [database名].[table名] to 'user'@'localhost'; grant all privileges on [database名].* to 'user'@'localhost';現在はお試しで触っているので権限をALLとしているが、
権限の細かな変更に関してはまた必要になったタイミングで記事にしようかと思います。