CakePHP テーブルから bake でスケルトンの作成

データベースにテーブルが存在すれば、bakeコマンドでスケルトンを作成してくれる。
スケルトンとは、Model, View ,Controllerの各ファイルのこと。

テーブルは作成されていることとする。

  リンク:CakePHPのチュートリアルより

CREATE TABLE users (
    id INT AUTO_INCREMENT PRIMARY KEY,
    email VARCHAR(255) NOT NULL,
    password VARCHAR(255) NOT NULL,
    created DATETIME,
    modified DATETIME
);

テーブルの規約は、だいたいこんな感じで理解

・テーブル名は、複数形とすること。 artiles
・主キーは id
・createとmodified のDATETIME列をつけてあげる。

リンク:データベースの規約

ここから、bakeの手順

XAMPP Control Panel を起動する。

C:\xampp\xampp-control.exe

XAMPP Control Panel 内の Shell ボタンをクリックする。

アプリケーションのフォルダに移動する。

cd c:\xampp\htdocs\book

bakeコマンドの実行

php bin/cake.php bake all users

以下、ずら~~~と、実行経過、結果が表示される。

Bake All
---------------------------------------------------------------
One moment while associations are detected.

Baking table class for Users...

Creating file C:\xampp\htdocs\book\src\Model\Table\UsersTable.php
Wrote `C:\xampp\htdocs\book\src\Model\Table\UsersTable.php`
Deleted `C:\xampp\htdocs\book\src\Model\Table\empty`

Baking entity class for User...

Creating file C:\xampp\htdocs\book\src\Model\Entity\User.php
Wrote `C:\xampp\htdocs\book\src\Model\Entity\User.php`
Deleted `C:\xampp\htdocs\book\src\Model\Entity\empty`

Baking test fixture for Users...

Creating file C:\xampp\htdocs\book\tests\Fixture\UsersFixture.php
Wrote `C:\xampp\htdocs\book\tests\Fixture\UsersFixture.php`
Deleted `C:\xampp\htdocs\book\tests\Fixture\empty`
Bake is detecting possible fixtures...

Baking test case for App\Model\Table\UsersTable ...

Creating file C:\xampp\htdocs\book\tests\TestCase\Model\Table\UsersTableTest.php
Wrote `C:\xampp\htdocs\book\tests\TestCase\Model\Table\UsersTableTest.php`

Baking controller class for Users...

Creating file C:\xampp\htdocs\book\src\Controller\UsersController.php
Wrote `C:\xampp\htdocs\book\src\Controller\UsersController.php`
Bake is detecting possible fixtures...

Baking test case for App\Controller\UsersController ...

Creating file C:\xampp\htdocs\book\tests\TestCase\Controller\UsersControllerTest.php
Wrote `C:\xampp\htdocs\book\tests\TestCase\Controller\UsersControllerTest.php`

Baking `index` view template file...

Creating file C:\xampp\htdocs\book\src\Template\Users\index.ctp
Wrote `C:\xampp\htdocs\book\src\Template\Users\index.ctp`

Baking `view` view template file...

Creating file C:\xampp\htdocs\book\src\Template\Users\view.ctp
Wrote `C:\xampp\htdocs\book\src\Template\Users\view.ctp`

Baking `add` view template file...

Creating file C:\xampp\htdocs\book\src\Template\Users\add.ctp
Wrote `C:\xampp\htdocs\book\src\Template\Users\add.ctp`

Baking `edit` view template file...

Creating file C:\xampp\htdocs\book\src\Template\Users\edit.ctp
Wrote `C:\xampp\htdocs\book\src\Template\Users\edit.ctp`
Bake All complete.

が表示される。

つまり作成されたのは、
作成されたのは、以下の通り。(testsを除く)

\Model
    \Table\
          UsersTable.php
\Model
      \Entity\
          User.php
\Controller\
          UsersController.php
\Template
      \Users\
          index.ctp
          view.ctp
          add.ctp
          edit.ctp

ブラウザからアクセスする。

 http://localhost/book/users

一覧が表示される!


CakePHP サイトを作る

book サイトを作る

XAMPP Control Panel を起動する。
C:\xampp\xampp-control.exe

XAMPP Control Panel 内の Shell ボタンをクリックする。
XAMPP

シェル(コマンドプロンプト)が起動するので、コマンドを入力する。

cd \xampp\htdocs

composer self-update && composer create-project --prefer-dist cakephp/app book

しばらく待つ。。。

最後に Yes or No を聞かれるので、Enter入力

Set Folder Permissions ? (Default to Y) [Y,n]?

XAMPP Control Panel で、Apache 起動済みであることを確認して、
ブラウザからアクセスする。
http://localhost/book/

CORESERVERでCakePHPを動かす

フォルダの準備

mkdir cakephp
cd cakephp

CakePHP 3.6 Red Velvet Cookbook インストール より
https://book.cakephp.org/3.0/ja/installation.html

composer を持ってくる

$ curl -sS https://getcomposer.org/installer | php

ls コマンドでファイルがダウンロードされたことを確認する

composer.phar

どうやらcomposerは、PHPを指定して実行するようだ。
/usr/local/bin/php71cli composer.phar
参考
https://www.ws-meguro.jp/?tag=coreserver

バージョンを確認する。

-bash-4.2$ /usr/local/bin/php71cli composer.phar -V

Composer version 1.6.5 2018-05-04 11:44:59

プロジェクトを作成

/usr/local/bin/php71cli composer.phar create-project --prefer-dist cakephp/app my_app_name

シンボリックリンクの作成

ln -s ~/cakephp/my_app_name/webroot ~/public_html/my_app_name

ブラウザから確認
http://www.getnext.net/my_app_name/

GCP Google Cloud PlatformでRailsしてみる

GoogleでRailsできるようなので久しぶりに挑戦してみた。

まずはRailsのおさらい。参考サイトがとても分かりやすかった。

Google App Engine は、最近は Google Cloud Platform 略してGCPというみたいだ。

◆ダウンロード
ここから
http://rubyinstaller.org/downloads/

その1
Ruby 2.3.3 (x64)
rubyinstaller-2.3.3-x64.exe

その2
For use with Ruby 2.0 and above (x64 – 64bits only)
DevKit-mingw64-64-4.7.2-20130224-1432-sfx.exe

◆コマンド
rubyinstaller-2.3.3-x64.exe の実行 e:\Ruby23-x64

DevKit-mingw64-64-4.7.2-20130224-1432-sfx.exe の回答 e:\DevKit

> \DevKit\devkitvars
> gem update –system
> gem install bundler
> gem install rails –version=”4.2.7″ –no-ri –no-rdoc
4.2系の最新を選択した

> cd \
> mkdir work
> rails new foo –skip-bundle
> cd foo
> bundle install
> rails g scaffold user name:string email:string
> rake db:migrate
> rails s
ブラウザから http://localhost:3000/users

登録、一覧表示、変更、削除ができる!

◆参考サイト
Ruby on Rails 4.2 を Windows にインストールする手順をかなり丁寧に説明してみました

Microsoft製のホームページ作成ソフト「Microsoft Expression Web 4」無料公開

久しぶりにHTMLを触ることになったが、
はて、何を使うのが今のトレンドなのか
わからない。

とりあえず、昔使ったExpression Webをと思って
検索したところ
なんと、2年も前に無料化されているじゃないか。
開発が止まってバージョンも上がっていないと。

Microsoft信者は何をつかっているんだろう?

参考
ホームページ作成/ホームページ作成補助ソフト
ウェブ作成ソフトMicrosoft Expression Web 4が無料化

C++ プログラムから画面解像度の変更

#include "stdafx.h"
#include <windows.h>

int _tmain(int argc, _TCHAR* argv[])
{
    DEVMODE devmode;
    ZeroMemory( &devmode, sizeof(devmode) );
    devmode.dmSize = sizeof(devmode);
    devmode.dmPelsWidth = 800;
    devmode.dmPelsHeight = 600;
    devmode.dmFields = DM_PELSWIDTH | DM_PELSHEIGHT;
    ChangeDisplaySettings(&devmode, CDS_FULLSCREEN);

    MessageBox( NULL, _T("解像度を変更しました。"), _T("情報"), MB_OK );

    return 0;    //この後解像度は戻る
}

手動で画面解像度を変更したときと同じく、一瞬真っ黒になる。

レンタルサーバCORESERVERに、Rails2.2.2のインストール

前回のとおり、Rails3.2.11は、どうしても入らないので、CGIに対応しているRails2.2.2をインストールした。

どうやら、昔使っていたXREAやCORESERVERは、仕様変更でfcgi(FastCGI)は使えなくなっているみたいだ。(確証はありません)

結局CGIで動いているので遅いです。Herokuにしとくんだったかな。。。

PREFIX=$HOME
export PATH=$PATH:$HOME/bin:$HOME/lib/ruby/gem/bin
export RUBYLIB=$HOME/lib:$HOME/lib/ruby
export GEM_HOME=$HOME/lib/ruby/gem
source ~/.bashrc

mkdir lib
mkdir lib/ruby

bin は、勝手に作成される。 gem のとき

ruby -v
ruby 1.8.5 (2006-12-04 patchlevel 2) [i686-linux]
	最初から入っているもの

mkdir tmp
cd ~/tmp
wget http://rubyforge.org/frs/download.php/60718/rubygems-1.3.5.tgz

tar zxvf rubygems-1.3.5.tgz

cd ~/tmp/rubygems-1.3.5/

ruby setup.rb --prefix=$HOME/lib

gem -v
1.3.5

gem env
RubyGems Environment:
  - RUBYGEMS VERSION: 1.3.5
  - RUBY VERSION: 1.8.5 (2006-12-04 patchlevel 2) [i686-linux]
  - INSTALLATION DIRECTORY: /virtual/hogehoge/lib/ruby/gem
  - RUBYGEMS PREFIX: /virtual/hogehoge
  - RUBY EXECUTABLE: /usr/local/bin/ruby
  - EXECUTABLE DIRECTORY: /virtual/hogehoge/lib/ruby/gem/bin
  - RUBYGEMS PLATFORMS:
    - ruby
    - x86-linux
  - GEM PATHS:
     - /virtual/hogehoge/lib/ruby/gem
     - /virtual/hogehoge/.gem/ruby/1.8
     - /usr/local/lib/ruby/gems/1.8
  - GEM CONFIGURATION:
     - :update_sources => true
     - :verbose => true
     - :benchmark => false
     - :backtrace => false
     - :bulk_threshold => 1000
  - REMOTE SOURCES:
     - http://gems.rubyforge.org/

gem install rake --version 0.8.7

gem install rails -v 2.2.2 --no-ri --no-rdoc

	2.2.2 じゃないと cgiが入らないらしい
	http://d.hatena.ne.jp/takahirox/20090514/1242304711

rails -v
Rails 2.2.2

ここからアプリ作成

cd rails
rails todo


config/environment.rb
# Be sure to restart your server when you modify this file
$LOAD_PATH.push("/virtual/hogehoge/lib")
$LOAD_PATH.push("/virtual/hogehoge/lib/ruby")
ENV['GEM_HOME'] ||= '/virtual/hogehoge/lib/ruby/gem'
ENV['RAILS_RELATIVE_URL_ROOT']="/todo"
ENV['RAILS_ENV'] ||= 'production'

config/database.yml
development:
  adapter: mysql
  encoding: utf8
  database: hogehoge_r2
  username: hogehoge_r2
  hogehoge: "PASSWORD"
  host: localhost


テーブル、アプリ作成
ruby script/generate scaffold task title:string
rake db:migrate

public/dispatch.cgi

1行目の編集
#!/usr/bin/env ruby

.htaccess

Options +FollowSymLinks +ExecCGI
AddHandler cgi-script .cgi
RewriteEngine On
RewriteRule ^(.*)$ dispatch.cgi [QSA,L]

シンボリックリンク作成

cd ~/public_html
ln -s ~/rails/todo/public/ todo

rm ~/rails/todo/public/index.html

ここまで

パスをメモ

> echo $PATH
/virtual/hogehoge/bin:/usr/local/bin:/usr/bin:/usr/X11R6/bin:/bin:/usr/games:/opt/gnome/bin:/usr/lib/mit/bin:/usr/lib/mit/sbin:/usr/local/mysql/bin:/usr/local/mysql/libexec:/usr/local/pgsql/bin:/virtual/hogehoge/bin:/virtual/hogehoge/lib/ruby/gem/bin

レンタルサーバCORESERVERに、Rails3.2.11のアプリケーションの作成

前回、Ruby on Railsのインストールはできたので、
今回はアプリケーションの作成です。

mkdir ~/rails
cd ~/rails

rails new hogeapp

データベースmysqlを指定するときは以下の様に

rails new hogeapp -d mysql

◆ファイルの編集

cd blog

vi Gemfile

#以下を最後に追加
gem 'therubyracer'
bundle install --without assets

#実行確認
rails server
(rails s でも同じ)

config/database.yml

development:
  adapter: mysql2   #2が付く
  encoding: utf8
  database: hogeapp_db
  username: hogeapp_db
  password: "12345" #数字のときダブルクォート
  host: localhost
test:, production: も同じ

シンボリックリンクの作成

cd ../public_html/

ln -s ~/blog/public/hogeapp

Railsのアプリケーションは作成できたが、公開ができない。。。