Githubのアカウントを二つ目取得!からのリモート接続までの道のり
こんにちは!
内定を頂いた会社で研修等があり宿題を提出する様でもう一つGithubアカウント
を取得したかったので、
取得してからのリモートで接続をしてEclipseでpushするまでが
なかなか大変だったのでメモ!
けど最終的にはとても簡単に接続が出来ました!
リモート接続を試みました!
こちらの記事参照
ssh鍵の確認方法
もうすでにssh鍵を作成しておいたので今回は作成の手順は省きます
ssh鍵の確認コマンドは
$ cat ~/.ssh/id_rsa.pub
公開鍵をGithubにUPする
https://github.com/settings/ssh
これで公開鍵の設定が出来る(GitHubに登録していることが前提条件)
右上のNew SSH keyを選択
そしたらこの様な画面になるので

[title]を記入(titleはなんでも良いのかな?)
そして公開鍵をコピーするコマンドで(mac)コピーして貼り付ける
$ pbcopy < ~/.ssh/id_rsa.pub
そしてAdd SSH keyを押したらエラー!!
なにやら同じ公開鍵ではGithubアカウントは複数登録出来ないみたいなので
公開鍵を作成する事に
ssh鍵の作成
$ ssh-keygen -t rsa -f xxxxxxxxxxx
xxxxxxxxxxxは自分の適当に
.ssh/configを修正する
$ vim ~/.ssh/config
------------------------------
vimファイルが開かれる
------------------------------
#private様
Host github.com
HostName github.com
User git
IdentityFile ~/.ssh/id_rsa
Port 22
#xxxxxxxxxxxx
Host xxxxxxxxxxxx
HostName github.com
User git
IdentityFile ~/.ssh/xxxxxxxxxxxx
Port 22
Host------------アカウントを識別出来る名前 HostName------git.comを設定 User------------gitを設定 IdentityFile------それぞれのアカウントのキーファイルを設定 Port-------------22を設定
公開鍵を新しく作ったGithubに登録する
新しく作った公開鍵をコピーしておいて
$ pbcopy < ~/.ssh/xxxxxxxxxxxxx.pub
最初の方に紹介した手順で登録する
ssh鍵の登録
$ ssh-add /Users/your_home/.ssh/id_rsa $ ssh-add /Users/your_home/.ssh/新秘密鍵
登録をしたらそれぞれのHost名で接続確認をする。
$ ssh -T github.com Hi アカウントA! You've successfully authenticated, but GitHub does not provide shell access. $ ssh -T xxxxxxxxxxxxxx Hi アカウントB! You've successfully authenticated, but GitHub does not provide shell access.
この時に最初どっちとも同じアカウントBで、こんにちは!って言われたので
しっかりと登録が出来てなかったみたい。
最初は鍵の登録の手順の時に「新秘密鍵」しか登録していなかったから
アカウントBで、こんにちは!ってなった原因だと思う。
それから元々あったアカウントを登録してあげたらしっかりと
アカウントAこんにちは!ってなりました!
アカウントBのディレクトリ設定
リポジトリ毎に設定が必要
名前とメールアドレスを登録
$ cd アカウントBのディレクトリ $ git config user.name "アカウントBのユーザーネーム" $ git config user.email "アカウントBのメールアドレス"
からの〜確認
$ less ./.git/config
・・・ここまでした所でとてもバタバタして
途中経過を載せる事が出来ませんでした!
けどここからの手順ではGithubにリモート接続を出来なかったです。
なんでだろうと思い悩み、色々考えると難しく考え過ぎていたのかなって
そしてここから気を取り直してもう一度1からやり直す事に!
とりあえずリポジトリはこのまま放置しておいて
次はEclipseの方で操作!
Eclipseで新規プロジェクトを作成
まだgit管理していないものをgit管理して、githubと連携する
まずは新規プロジェクトを作成

javaプロジェクトを選択

プロジェクト名を決める

動作検証用のソースコードの追加

Mainクラスを追加

hogeを出力

ローカルリポジトリをgit化

Gitを選択

まだローカルにリポジトリがないので
リポジトリ欄の右の「作成」を押す

好きな名前をつける。場所を変更しても大丈夫

これで完了したらRubyでgit initしたのと一緒の状態になる
ステージにあげたって事
そして動作検証でcommitをする

この様な画面が出るので
Main.javaを選択して+を押す(git add Main.javaと一緒)
そしてコミット!

からの

URLをコピーして貼り付ける

プレビューを押したらアカウントを登録した時の
名前とパスワードを聞かれるので入力する

そしてこんな感じになるので

後は作成したリポジトリを見てしっかりと
pushが出来ていたら成功です!
【Java】の配列
配列のデータの従来のfor文と拡張for文の比較
従来のfor文
public class Main {
public static void main(String[] args){
int[] score = {1, 2, 3, 4, 5};
for (int i = 0; i < score.length; i++) {
System.out.println(score[i]);
}
}
}
1
2
3
4
5
拡張for文
public class Main {
public static void main(String[] args){
int[] score = {1, 2, 3, 4, 5};
for (int value : score) {
System.out.println(value);
}
}
}
1
2
3
4
5
引数に配列を用いる
メソッドんp引数にはint型やString型などの変数だけでなく
配列も使う事が出来る。
public class Main {
public static void main(String[] args){
int[] array = {1,2,3};
printArray(array);
}
public static void printArray(int[] array) {
for (int element : array) {
System.out.println(element);
}
}
}
1
2
3
戻り値に配列を用いる
public class Main {
public static int[] makeArray(int size) {
int[] newArray = new int[size];
for (int i = 0; i < newArray.length; i++) {
newArray[i] = i;
}
return newArray;
}
public static void main(String[] args) {
int[] array = makeArray(3);
for (int i : array) {
System.out.println(i);
}
}
}
0
1
2
Java初級【基礎編】
命令実行の文
System.out.println("");は改行されてしまうが
public class Main {
public static void main(String[] args){
System.out.print("Hello");
System.out.print("World");
}
}
HelloWorld
System.out.print("")は改行されない
大きい方の数字を代入する命令
二つの値を比較して大きい方の数字を代入する
public class Main {
public static void main(String[] args){
int a = 5;
int b = 6;
int m = Math.max(a, b);
System.out.println("大きい方は" + m);
}
}
大きい方は6
文字列を数値に変換する命令
String型をint型に変換する命令
public class Main {
public static void main(String[] args){
String a = "5";
int b = Integer.parseInt(a);
System.out.println(b);
}
}
5
乱数を生み出して代入する命令
ランダムな数を生成する命令
class Main {
public static void main(String[] args) {
int r = new java.util.Random().nextInt(90);
System.out.println(r);
}
}
65
Java初級【基礎編】
メソッドを呼び出してみる
メソッドとは、何らかの処理を割り当てた部品。
Javaのファイルを実行すると、自動的にmainメソッドが実行される
mainメソッドの処理をメソッドに切り分けると、
mainメソッドが各メソッドに指示を出し、
各メソッドが個々の処理を実行するという構造になる。
class Main {
public static void main(String[] args) {
hello();
}
public static void hello() {
System.out.println("Hello Java");
}
}
Hello Java
class Main {
public static void main(String[] args) {
printData();
printData();
}
public static void printData() {
System.out.println("私は佐藤です");
}
}
私は佐藤です
私は佐藤です
メソッドに引数を渡す
メソッドに引数を渡すには、
メソッド名(引数)としてメソッドを呼び出す。
渡された引数は、メソッドの仮引数で指定した変数に代入され、
その変数はメソッドの処理の中で用いることができる。
class Main {
public static void main(String[] args) {
printData("佐藤");
printData("加藤");
}
public static void printData(String name) {
System.out.println("私の名前は" + name + "です");
}
}
私の名前は佐藤です
私の名前は加藤です
複数の引数をもつメソッド
引数は複数渡すこともできる。
メソッドが複数の引数を受け取るためには、
仮引数をコンマ(,)で区切って定義する。
異なるデータ型の引数を複数受け取ることもできますし、
引数を受け取る順番も任意に決めることができる。
引数は左から順番に「第1引数、第2引数・・・」
というように呼ぶ。
class Main {
public static void main(String[] args) {
printData("佐藤", 34);
printData("加藤", 23);
}
public static void printData(String name, int age) {
System.out.println("私の名前は" + name + "です");
System.out.println("年齢は" + age + "歳です");
}
}
私の名前は佐藤です
年齢は34歳です
私の名前は加藤です
年齢は23歳です
戻り値とreturnとvoide
return
メソッドの処理結果を、メソッドの呼び出し元で使いたい場合がある
このようなときは、
メソッドが戻り値(もどりち)を返すようにする。
メソッドの中でreturnを使うと、
returnの値をメソッドの呼び出し元に返すことができる。
戻り値があるメソッドは、戻り値のデータ型を指定する。
定型だった「public static void」のvoidの部分で指定する。
voide
voidは戻り値がないという意味。
戻り値のない(returnがない)メソッドには、voidを指定する。
class Main {
public static void main(String[] args) {
String name = fullName("佐藤", "健");
printData(name, 27);
printData("渡辺 健", 65);
}
public static void printData(String name, int age) {
System.out.println("私の名前は" + name + "です");
System.out.println("年齢は" + age + "歳です");
}
// fullNameメソッドを定義してください
public static String fullName(String firstName, String lastName) {
return firstName + " " + lastName;
}
}
私の名前は佐藤 健です
年齢は27歳です
私の名前は渡辺 健です
年齢は65歳です
メソッドのオーバーロード
同名のメソッドは原則として定義できない。
同じメソッドが複数存在すると、メソッドを呼び出したときに
どのメソッドを用いればいいのか、
コンピュータがわからなくなってしまうから。
ただし、引数の型や個数が違う場合は同名のメソッドを定義できる。
同名のメソッドがあっても、引数が違えばどれを呼べばいいのか
コンピュータが判断できるためです。
このように同名のメソッドを定義することをオーバーロードと言う。
class Main {
public static void main(String[] args) {
printData(fullName("佐藤", "健"), 27);
// fullNameメソッドを用いて、printDataの引数を書き換えてください
printData(fullName("渡辺", "ナベ", "健"), 65);
}
public static void printData(String name, int age) {
System.out.println("私の名前は" + name + "です");
System.out.println("年齢は" + age + "歳です");
}
public static String fullName(String firstName, String lastName) {
return firstName + " " + lastName;
}
public static String fullName(String firstName, String middleName, String lastName) {
return firstName + " " + middleName + " " + lastName;
}
}
私の名前は佐藤 健です
年齢は27歳です
私の名前は渡辺 ナベ 健です
年齢は65歳です
メソッドからメソッドを呼ぶ
メソッドは、mainメソッド以外のメソッドから呼び出すことも可能
プログラムの部品であるメソッドが、
相互に助けあってプログラムを形作る。
class Main {
public static void main(String[] args) {
printData(fullName("佐藤", "健"), 27, 1.6, 50.0);
printData(fullName("渡辺", "ナベ", "健"), 65, 1.75, 80.0);
}
public static void printData(String name, int age, double height, double weight) {
System.out.println("私の名前は" + name + "です");
System.out.println("年齢は" + age + "歳です");
System.out.println("身長は" + height + "mです");
System.out.println("体重は" + weight + "kgです");
double bmi = bmi(height, weight);
System.out.println("BMIは" + bmi + "です");
}
public static String fullName(String firstName, String lastName) {
return firstName + " " + lastName;
}
public static String fullName(String firstName, String middleName, String lastName) {
return firstName + " " + middleName + " " + lastName;
}
public static double bmi(double weight, double height) {
return weight / height / height;
}
}
私の名前は佐藤 健です
年齢は27歳です
身長は1.6mです
体重は50.0kgです
BMIは6.4E-4です
私の名前は渡辺 ナベ 健です
年齢は65歳です
身長は1.75mです
体重は80.0kgです
BMIは2.7343749999999997E-4です
クラス・他のクラスを呼び出す
クラスは、メソッドという小さな部品をまとめる、
より大きな部品で。これまではmainメソッドと同じクラス
(Mainクラス)のメソッドを使ってきたが、
他のクラスのメソッドを利用することも可能
クラスの定義は「class クラス名」とします。
クラス名の最初の文字は大文字にし、
ファイル名は「クラス名.java」としなければならない。
Main.java
class Main {
public static void main(String[] args) {
Person.hello();
}
}
Hello
Person.java
class Person {
public static void hello() {
System.out.println("Hello");
}
}
先ほどの一つにまとまっているclass Mainを
class Personを作って分けてみる
Main.java
public class Main {
public static void main(String[] args) {
Person.printData(Person.fullName("Kate", "Jones"), 27, 1.6, 50.0);
Person.printData(Person.fullName("John", "Christopher", "Smith"), 65, 1.75, 80.0);
}
}
Person.java
class Person
public static void printData(String name, int age, double height,
double weight) {
System.out.println("私の名前は" + name + "です");
System.out.println("年齢は" + age + "歳です");
System.out.println("身長は" + height + "mです");
System.out.println("体重は" + weight + "kgです");
double bmi = bmi(height, weight);
System.out.println("BMIは" + bmi + "です");
}
public static String fullName(String firstName, String lastName) {
return firstName + " " + lastName;
}
public static String fullName(String firstName, String middleName, String lastName) {
return firstName + " " + middleName + " " + lastName;
}
public static double bmi(double weight, double height) {
return weight / height / height;
}
}
私の名前は佐藤 健です 年齢は27歳です 身長は1.6mです 体重は50.0kgです BMIは6.4E-4です 健康です 私の名前は渡辺 ナベ 健です 年齢は65歳です 身長は1.75mです 体重は80.0kgです BMIは2.7343749999999997E-4です 健康ではありません
外部ライブラリ
Javaでは、他人が作ったクラスを利用することもできる。
このようなクラスを外部ライブラリと呼び、
自分のプログラムに読み込むことで利用できるようになる。
すべてのプログラムを自分だけで開発する必要がない。
世界中のエンジニアが作った便利なメソッドを利用することで、
開発の幅は一気に広がる。
Mathクラスのメソッド
Mathクラスのmaxメソッドを使ってみる。
maxメソッドは、引数に渡した2つの数値の大きい方を
返してくれる。
外部ライブラリをうまく活用すれば、
自分で実装する手間が省けるので便利。
Person.java
import java.lang.Math;
class Person
public static void printData(String name, int age, double height,
double weight) {
System.out.println("私の名前は" + name + "です");
System.out.println("年齢は" + age + "歳です");
System.out.println("身長は" + height + "mです");
System.out.println("体重は" + weight + "kgです");
double bmi = bmi(height, weight);
System.out.println("BMIは" + Math.round(bmi) + "です");
ここ
}
public static String fullName(String firstName, String lastName) {
return firstName + " " + lastName;
}
public static String fullName(String firstName, String middleName, String lastName) {
return firstName + " " + middleName + " " + lastName;
}
public static double bmi(double weight, double height) {
return weight / height / height;
}
}
私の名前は佐藤 健です
年齢は27歳です
身長は1.6mです
体重は50.0kgです
BMIは20です
健康です
私の名前は渡辺 ナベ 健です
年齢は65歳です
身長は1.75mです
体重は80.0kgです
BMIは26です
健康ではありません
import不要のクラス
先ほど読み込んだ「java.lang.Math」はよく利用されるため、
実は特別にimportせずに自動で読み込まれるようになっている。
Mathクラス以外にも「java.lang.クラス名」となる外部ライブラリは
すべて自動で読み込まれる。
Scannerで文字を受け取る
import java.util.Scanner;
class Main {
public static void main (String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.print("名前: ");
String name = scanner.next();
// 「こんにちは◯◯さん」と出力してください
System.out.println("こんにちは" + name + "さん");
}
}
Scannerで数値を受け取る
Scannerを用いて、整数と小数を受け取る方法。
整数を受け取るメソッドはnextIntメソッド、
小数を受け取るメソッドはnextDoubleメソッド。
System.out.print("年齢:");
int age = scanner.nextInt();
System.out.print("身長(m):");
double height = scanner.nextDouble();
Java初級【基礎編】
真偽値とは
真偽値には「true」と「false」という2つの値しか存在しない。
trueは真(正しい)、falseは偽(間違っている)。
真偽値のデータ型はboolean型。
trueとfalseはboolean型
boolean bool = true;
↑
データ型
class Main {
public static void main(String[] args) {
// 「真」を表す真偽値を出力
System.out.println(true);
true
// 「偽」を表す真偽値を出力
System.out.println(false);
false
// 「==」を用いて、値を比較した結果を出力
System.out.println(12 / 4 == 3);
true
// 「!=」を用いて、値を比較した結果を出力
System.out.println(12 / 4 != 3);
false
// boolean型の変数boolを定義し、「3 * 9 == 27」を代入
boolean bool = 3 * 9 == 27;
// 変数boolの値を出力
System.out.println(bool);
true
}
}
倫理演算〜ではない
// 「8 < 5」でない、の結果を出力
System.out.println(!(8 < 5));
true
if文
class Main {
public static void main(String[] args) {
int number = 12;
if (number < 10) {
System.out.println("10より小さい");
} else if (number < 20) {
System.out.println("10以上、20より小さい");
} else {
System.out.println("20以上");
}
}
}
10以上、20より小さい
switch文
条件分岐にはswitch文という構文もある。
switch文は下図のように記述し、
条件の値がcaseの値と一致するとき、処理が実行される。
switch文は構文が少し複雑。caseの後ろのコロン(:)などは
忘れがちなので注意。
class Main {
public static void main(String[] args) {
int number = 12;
switch (number % 3) {
case 0:
System.out.println("3で割り切れる");
break;
case 1:
System.out.println("3で割ると1余る");
break;
case 2:
System.out.println("3で割ると2余る");
break;
}
}
}
3で割り切れる
switch文default
switch文では、どのcaseとも一致しなかったときに実行する処理を
defaultに指定することができる。
class Main {
public static void main(String[] args) {
int number = 13;
switch (number % 5) {
case 0:
System.out.println("大吉");
break;
case 1:
System.out.println("中吉");
break;
case 4:
System.out.println("凶");
break;
default:
System.out.println("吉");
break;
}
}
}
吉
繰り返し処理while文
class Main {
public static void main(String[] args) {
int number = 10;
while (0 < number) {
System.out.println(number);
number --;
}
}
}
10
9
8
7
6
5
4
3
2
1
繰り返し処理for文
class Main {
public static void main(String[] args) {
for(int i = 1; i <= 10; i ++)
System.out.println(i + "回目");
}
}
1回目
2回目
3回目
4回目
5回目
6回目
7回目
8回目
9回目
10回目
breakとcontinue
break
繰り返し処理を終了するためには、
条件をfalseにする以外に、
breakを使って強制的に終了させる方法がある。
if文などの条件分岐と組み合わせることで、
任意の箇所で繰り返し処理を終了させることができる。
continue
繰り返し処理を終了するbreakと違い、
continueはその周の処理だけをスキップして、
次の周を実行することができる。
continueもif文などと組み合わせて利用するのが一般的。
class Main {
public static void main(String[] args) {
System.out.println("=== while文 ===");
int i = 1;
while (i < 10) {
// iが5の倍数のとき、繰り返し処理を終了
if (i % 5 == 0) {
break;
}
System.out.println(i);
i++;
}
System.out.println("=== for文 ===");
for (int j = 1; j < 10; j++) {
// jが3の倍数のとき、処理をスキップ
if (j % 3 == 0) {
continue;
}
System.out.println(j);
}
}
}
===while文===
1
2
3
4
===for文===
1
2
4
5
7
8
配列の変数定義
配列を扱う場合には、配列型の変数に配列を代入する。
配列型は、「int型の要素を持つ配列型」
「String型の要素を持つ配列型」という風に指定する。
int型の要素を持つ配列はint,
String型の要素を持つ配列はStringと記述。
class Main {
public static void main(String[] args) {
String[] names = {"本","音楽","いたずら"};
System.out.println(names[0]);
System.out.println(names[2]);
}
}
本
いたずら
配列のfor文とlengthメソッド
配列には、要素の数を数えるlengthという機能が備わっている。
lengthは、「配列.length」のようにドット(.)でつないで用いる。
lengthを用いれば、配列の要素数を気にする必要がなくなる。
class Main {
public static void main(String[] args) {
String[] names = {"本", "音楽", "いたずら"};
for (int i = 0; i < names.length; i ++) {
System.out.println("これは" + names[i] + "です");
}
}
}
これは本です
これは音楽です
これはいたずらです
拡張for文の文法
for文は配列用に特別な構文(拡張for文)を用意している。
これを使えば、先ほどのfor文をよりシンプルに書くことができる。
拡張for文はこのように記述する。
class Main {
public static void main(String[] args) {
String[] names = {"本", "音楽", "いたずら"};
for (String name: names) {
System.out.println("これは" + name + "です");
}
}
}
これは本です
これは音楽です
これはいたずらです
Java超初級【基礎編】
RubyからJavaを勉強をする事になったのでRubyとは違うなって
思ったとこをメモ
変数の定義・初期化
変数を使うには、まず変数を「定義」する必要がある
変数を定義することで値をいれる箱がつくらる
Javaで変数を定義するためには
①変数にいれる値のデータ型を指定する
②変数の名前を決める、という2つが必要。
整数 int number = 3; 少数 double number = 3.14; 文字列 String text = "Hello World";
変数の注意点
変数にはいくつか決まりがある
変数名は基本的に自由に決めらるが、
Javaでは下図のような決まりがある。
「userName」のように2語以上の変数名を使うときは、
単語の始めを大文字にして区切る。
この記述法をキャメルケースと呼ぶ。

型変換について
「+」などの操作は同じデータ型同士でないとできない。
よって型の違うものを演算するときは、
型を変換し同じ型にしてる。
Javaではこの型変換の方法として、
自動の変換と手動の変換がある。
まずは自動型変換を学ぶ。
下図のようにString型とint型を足すと、
int型が自動でString型に変換され、
文字列の結合が行われる。
System.out.println("中村さんは" + 32 + "才です");
32はint型だがString型に変換される
中村さんは32才です
数値の計算の注意点
int型同士の計算は、結果もint型になり、
double型同士の計算は、結果もdouble型になる。
int型の5をint型の2で割ると、結果は「2.5」ではなく
「2」となることに注意する。
System.out.println(5 / 2); ↓ 2 System.out.println(5.0 / 2.0); ↓ 2.5
キャスト
強制的に型変換を行う事をキャストと呼び、
(変換したいデータ型)値とする。
int型同士の値から、最終的にdouble型の計算結果を得たい場合、
どちらか一つをキャストしてあげる。
int number1 = 13; int number2 = 4; System.out.println((double)number1 / number2); ↓ 3.25
Ruby On RailsでherokuとLINE Message APIで名言ボットを作る
学ぶ事がいっぱいでしっかりアウトプットをしながら進めて行きたかったから
ボリュームがあるので小分けにしてアウトプットしてます
この記事の以前の進捗はこの記事を参照
早めにアウトプットしたのでタスク名とか
アクション名とか細かな設定は変更してます。
10分間隔で通知が出来る様になったから次は
DBに名言と名言を発信した方の写真を保存をして
保存したのをランダムで取得して出力をしていくまでのメモ!
データベースを事前に作成する
$ rails db:create
development.sqlite3とtest.sqlite3が作成される
モデルクラスを作成する
$ rails g model Post content:text image:text
マイグレーションの実行
$ rails db:migrate
データベース用コンソールを起動
$ rails dbconsole
テーブルが作成されていることを確認
sqlite> .table
テーブル構造を確認
sqlite> .schema テーブル名
引数を省略するとデータベースにある全てのテーブルを確認できる
db/seeds.rbに初期データを追加する
Post.create(:id => 1, :content => 'しっかりと 準備もしていないのに 目標を語る資格はない。 by イチロー', :image => 'https://trend-comment.com/wp-content/uploads/2013/08/A5A4A5C1A5EDA1BCA3B2.jpg') Post.create(:id => 2, :content => 'やってみて 「ダメだ」とわかったことと はじめから 「ダメだ」と言われたことは 違います。 by イチロー', :image => 'https://trend-comment.com/wp-content/uploads/2013/08/A5A4A5C1A5EDA1BCA3B2.jpg')
この時名言を1行で書くとlineで送られてくる時に
文がバラけた感じで送られてくるからこの様に記述した
けどもっと良い方法があるかもしれないからもっと
DBの勉強をしなくては!
そしてシードデータに投入する
$ rake db:seed
これでローカルの(SQLite3)に初期データを保存出来た!
webhookcontrollerを編集
meigendayoアクションでcontentカラムとimageカラムを
取得して、それをランダムに出力出来る様に記述
そしてhashで、DBから取り出したら配列になっているから
LINEドキュメントをのコードを参考にして、contentとimageを振り分ける
class WebhookController < ApplicationController
require 'line/bot'
def meigendayo
number = (1..229).to_a
number2 = number.sample
meigen = Post.pluck(:content, :image)
meigen2 = meigen[number2]
hash = {"1" => meigen2[0], "2" => meigen2[1]}
message = {
"type": "text",
"text": hash["1"]
},
{
"type": "image",
"originalContentUrl": hash["2"],
"previewImageUrl": hash["2"]
}
client = Line::Bot::Client.new { |config|
config.channel_secret = ENV["LINE_CHANNEL_SECRET"]
config.channel_token = ENV["LINE_CHANNEL_TOKEN"]
}
response = client.push_message(ENV["LINE_USER_ID"], message)
end
end
herokuにDBのテーブルを作る
訳あってローカルでSQLite3で本番でpostgresになっちゃったから
次は本番のpostgresにテーブルを作る
めんどくさい事になったけどDBを二つ使う事により
DBの良い勉強になったし、理解も深められたから
結果二つのDBで作業をして良かったって思う!
まずはマイグレーションの実行
$ heroku run rake db:migrate
そしてseedsファイルに記載されている情報をDBに追加
$ heroku run rake db:seed
そしてDBの確認
$ heroku pg:psql -a herokuのアプリ名
テーブルの確認
DATABASE=> select * from posts;
これでズラーッとDBに保存された内容が出たら成功!!
試しに
$ heroku run rake reminder_task:meigen
をしたらしっかりと名言と写真が送られてきました!
そして
$ git add . $ git commit -m "~~~" $ git push heroku master
こんな感じでLINEから名言と写真が送られてきました(☝︎ ՞ਊ ՞)☝︎
