記事の概要
インターネットにつながらない職場のサーバで、railsの環境を作った際のメモです。
効能
この記事は以下の症状に該当する人に効果があるかもしれません。(使えなくてもスミマセン)
・ふとした拍子に職場でrailsのアプリを作りたくなることがある。
・急にrailsを実験したくなる。
・急にrubyが書きたくなる。
・しかし、gemファイルを一個一個ダウンロードして環境構築なんてやってらんねーからやーめた。
前提
職場のPCからはインターネットがみられる。
職場のPCから、サーバへのSSH接続可能。
家のPCから、職場のPCへのデータ持ち込み手段がある。(メールとか、自前のホームページとか。)
手順
-
家で一回環境を作る。
-
アプリケーションディレクトリを生成
shell# アプリケーションを作って。。 rails new appname # => これでbundle installまでしてくれますね。 # 生成されたディレクトリに移動しておくと、後々楽です。 cd appname
-
database.ymlを編集
使うデータベースに合わせて編集します。
ここでは、とりあえずのdevelop環境&sqliteでやりますので、デフォルトのままです。database.ymldefault: &default adapter: sqlite3 pool: <%= ENV.fetch("RAILS_MAX_THREADS") { 5 } %> timeout: 5000 development: <<: *default database: db/development.sqlite3
-
適当にscaffold
とりあえず、sqlite用のgemがインストールされてなくてやり直しって事があったので、モデルの生成&ちょっとした動作確認まで進めちゃいます。shell# アプリケーションディレクトリで以下のコマンドを実行。 bundle exec rails g scaffold ExampleTest title:string description:string # マイグレーションを実行 bundle exec rails db:migrate # 動作確認用にサーバを起動(ローカルでしか起動しないので、バインディングとポート番号は適当です。) bundle exec rails s -b 0.0.0.0 -p 30001 # 無事起動したら、以下のアドレスにアクセスしてみます。 # http://localhost:30001/example_tests # アクセスできたら、Ctrl + Cでサーバを止めます。
-
まとめて固めて持っていく。
bundlerには必要なgemファイルを/vendor/cacheにまとめてくれる機能(パッケージ化)があります。
こいつを使って、他の環境に持ち運べるようにします。shell# コマンドを一つ叩くだけの簡単なお仕事です。 bundle pack # そうしますと、./vendor/cacheの中にgemファイルがたくさん入ってきます。 ls -1 ./vendor/cache # 結果例: # actioncable-6.0.2.2.gem # actionmailbox-6.0.2.2.gem # actionmailbox-6.0.2.2.gem # :(延々と続く) # では、これらを固めてしまいます。 # まずは、アプリケーションディレクトリの一個上の階層に移動して。。 cd ../ # tarで固める。(appnameはrails newの時に指定したアプリケーション名ですね。) tar cvzf appname.tgz appname
-
出来上がったtarファイルをなんとかして職場PCに持ち込む
私は、自前のS3を使いました。。
-
-
作ったrailsアプリをサーバで展開。
-
SSHを使ってtarファイルをサーバに置きます。
-
置いたら、以下の手順で、展開&bundle install
shell# まずはtarファイルを展開(tgzにしてましたが。。) tar xvzf appname.tgz # 出来上がったディレクトリに移動 cd appname # 以下のコマンドで必要なgemをインストールできます。 # --localオプションにより、vendor/cache配下のgemを使ってくれるという寸法です。 bundle install --local
=> これで完了です。
-