【Ruby】CarrierWaveを利用してS3に5GB以上のファイルをアップロードする
3日ほどさんざんハマっててようやく解決したのでメモ。
構築中のシステムでzipファイルをCarrierWaveを利用してS3に自動アップロードする処理があるが、特定のファイルだけどうしてもアップロードできずにハマってた。
ソースやデータを見てもおかしなことろがなく、「何がまずいのか...」と思っていたが、S3のドキュメントを見ていたら、
1 回のオペレーションでオブジェクトをアップロードする – 1 回の PUT オペレーションでアップロードできるオブジェクトの最大サイズは 5 GB です。
これだあああああああああ
S3では5GB以上のファイルは1度にアップロードできず、「マルチパートアップロードAPI」を利用しないといけないとのこと。
今回アップロードしようとしていたzipの容量が5.3GBだったので、これに引っかかっていた模様。
以下の記事を参考に、CarrierWaveの設定を追加
CarrierWave.configure do |config| ... config.fog_attributes = { :multipart_chunk_size => 524288000 } # => 500MBずつアップロード ... end
これで5GB以上のファイルも無事にアップロードできました。
Amazon Web Servicesではじめる新米プログラマのためのクラウド超入門 (CodeZine BOOKS)
- 作者: WINGSプロジェクト阿佐志保,山田祥寛
- 出版社/メーカー: 翔泳社
- 発売日: 2016/06/17
- メディア: 単行本(ソフトカバー)
- この商品を含むブログを見る
【Tomcat7】DataSourceが見つからずにjava.lang.ClassNotFoundExceptionが発生する
Tomcatインストール後、DB接続情報を書いて接続確認した時にハマったのでメモ。
環境
今回は以下のような環境で実施してました
- OS: Redhat Enterprise Linux 7
- Java: 1.7.0_151
- Tomcat: 7.0.76
- MySQL: 5.7.20
手順
%CATALINA_HOME%/webapps/Hoge
にアプリケーション設置後、
%CATALINA_HOME%/conf/Catalina/localhost/Hoge.xml
作成し、以下のように接続情報を記載
<Context path="/Hoge" reloadable="true" docBase="/usr/share/tomcat/webapps/Hoge"> <Resource name="MySQL_JDBC" auth="Container" factory="org.apache.tomcat.dbcp.dbcp.BasicDataSourceFactory" type="javax.sql.DataSource" username="xxxx" password="xxxxxxxx" url="jdbc:mysql://127.0.0.1:xxxx/HogeDB" maxWait="3000" /> </Context>
%CATALINA_HOME%/webapps/Hoge/WEB-INF/web.xml
に以下追記
<resource-ref> <res-ref-name>MySQL_JDBC</res-ref-name> <res-type>javax.sql.DataSource</res-type> </resource-ref>
ブラウザでページを確認すると、次のようなエラーがががが。
Dec 06, 2017 5:16:58 PM org.apache.catalina.core.NamingContextListener addResource WARNING: Failed to register in JMX: javax.naming.NamingException: Could not create resource factory instance [Root exception is java.lang.ClassNotFoundException: org.apache.tomcat.dbcp.dbcp.BasicDataSourceFactory]
解決方法
StackOverFlowの記事によると、tomcat-dbcp-7.0.30.jar
が破損しているとのこと。
%CATALINA_HOME%/lib/
を確認してみると、そもそもtomcat-dbcp-7.0.30.jar
が無かった...。
記事にある通りにjarファイルをダウンロードしてみる
$ wget -O /usr/share/java/tomcat-dbcp-7.0.30.jar http://search.maven.org/remotecontent?filepath=org/apache/tomcat/tomcat-dbcp /7.0.30/tomcat-dbcp-7.0.30.jar
再度ブラウザで確認してみると、エラー無く確認できた。
Tomcat初めて触るからわからないことだらけで大変だ...(白目
参考サイト
- 作者: 藤野圭一
- 出版社/メーカー: オライリージャパン
- 発売日: 2014/12/26
- メディア: 大型本
- この商品を含むブログ (1件) を見る
Mac OS High Sierra(10.13) で Illustrator CS6を利用する
そろそろYosemiteでの作業が辛くなってきた今日この頃。
思い立ってHigh Sierraにアップデートしてみました。
アップデートも無事完了し、Illustrator CS6を利用しようとしたら
Java SE6ランタイム入れて下さい的なアラートが...
今更古いランタイムは入れたくない...何か方法はないものかと調べていると
どうやらPhotoshop CS6/Illustrator CS6ではJava SE6は利用しておらず、
ディレクトリの存在確認のみ行っているとのこと...
なので、単純に存在確認を行っているディレクトリを作成してあげれば良いらしい。
必要なディレクトリの作成コマンドは次の通り。
$ sudo mkdir -p /System/Library/Java/JavaVirtualMachines/1.6.0.jdk $ sudo mkdir -p /System/Library/Java/Support/Deploy.bundle
ただ、High Sierraでは(というかEl Capitan以降では)、System Integrity Protection(SIP)の影響で
デフォルトの状態では書き込むことができず、一旦SIPを無効にしないといけません。
- OSをリカバリーモードで起動する(cmd+rを押しながらOSを起動)
- メニューバーからターミナルを開き、
# csrutil disable
を入力
(この時点でSIPが無効化され、/System以下に書き込めるようになる) - mac再起動し、前述の2つのディレクトリを作成する
- 再びリカバリーモードで起動する
- メニューバーからターミナルを開き、
# csrutil enable
を入力
(SIPを再び有効化する) - macを再起動する
参考にしたページ
以下の内容を参考にさせていただきました。
ありがとうございますありがとうございます。
【Ruby on Rails】ダイアログの改行でハマった
Ruby on Rails案件で早速ハマりました(ヽ´ω`)
前提
Ruby: 2.0.0p647 Ruby on Rails: 4.2.5
ダイアログに改行を入れたい...
alertで出て来るダイアログのメッセージに改行を入れようと、以下のようにコードを書いたのですが、何故かalertの内容が改行されません。
ちゃんとダイアログ内の文言には改行コード(\n
)を入れているですが...。
= link_to 'ダイアログ出すよ', [リンク先URL], :data => { :confirm => 'ダイアログだよ!\n二行目だよ!' }
文言を囲むときはダブルクオーテーションのほうが良さげ
調べてみるとGithubに同様の記事がありました。 以下のIssueによると、どうやらシングルクオーテーションで文言を囲った場合は改行コードは変換されないとのことでした。
Interpret newline escape codes in dialog messages? · Issue #388 · rails/jquery-ujs
Issueにもある通り、:confirm
の文言をダブルクオーテーションで囲むことで意図したとおりに出力できるようになりました。
= link_to "ダイアログ出すよ", [リンク先URL], :data => { :confirm => "ダイアログだよ!\n二行目だよ!" }
クオーテーションで挙動が異なるとは...。 Ruby on Rails中々面白いけど、難しいですねぇ。
参考になったページ
- 作者: すがわらまさのり,前島真一,近藤宇智朗,橋立友宏
- 出版社/メーカー: 技術評論社
- 発売日: 2014/10/31
- メディア: Kindle版
- この商品を含むブログ (1件) を見る
Macに Ruby on Railsの環境を作成する
Ruby on Rails案件に入ることになり、手持ちのmacにて環境を作りましたのでメモ。 そもそもRubyすらやったこと無いんですが...(ヽ´ω`)
前提
- Mac OS X Yosemite(ver 10.10.5)
- homebrewインストール済み
ruby-build, rbenvのインストール
まずはruby-build
, rbenv
というツールをインストールしないといけないとか。
それぞれのツールの役割は以下の通り。
rbenv
: Rubyのバージョン切り替えツール
ruby-build
: rbenvでRubyをビルド・管理するためのパッケージ
インストールはhomebrewを使って行います。
$ brew install ruby-build $ brew install rbenv
インストールが完了したら、pathの設定を行います。
.bash_profile
に下記の内容を書きます。
# .bash_profileは ~/ にある想定です。 $ cd ~/ $ echo 'export PATH="$HOME/.rbenv/bin:$PATH"' >> .bash_profile $ echo 'eval "$(rbenv init -)"' >> .bash_profile $ source .bash_profile
Rubyをインストールする
macにデフォルトで入っているRubyだと案件で利用しているものとバージョンが異なっていたので、rbenv
を使ってインストールします。
$ rbenv install -l
今回は記事公開時の最新版(2.4.0)をインストールします。
$ rbenv install 2.4.0
インストールしたままだとまだ利用できないため、利用するrubyのバージョンを指定します。
$ rbenv global 2.4.0
バージョンが切り替わっているか確認します。
$ ruby -v ruby 2.0.0p481 (2014-05-08 revision 45883) [universal.x86_64-darwin14] $ rbenv versions * system (set by /Users/[username]/.rbenv/version) 2.4.0
$ rbenv versions system * 2.4.0 (set by /Users/owner/.rbenv/version) $ ruby -v ruby 2.4.0p0 (2016-12-24 revision 57164) [x86_64-darwin14]
Ruby on Railsのインストール
Rubyがインストール出来ましたら、Ruby on Railsのインストールを行います。 以下のコマンドを打ってインストールを行います。
$ gem install rails
これでRuby on Railsを利用する準備はできました。
あとはプロジェクトで利用しているGemを管理, インストールしてくれるBundler
も併せてインストールしておきます。
Bundler
: Railsアプリケーションに必要となるGemの種類やバージョンを管理し、複数のPCで必要なGemをインストールする仕組みを提供してくれるもの
$ gem install bundler
これで案件の準備は出来ました。 Rubyを利用するのは初めてだったので、色々準備が必要ですね。。 あとは少しずつRailsのお作法とか学ばないと...(ヽ´ω`)
- 作者: すがわらまさのり,前島真一,近藤宇智朗,橋立友宏
- 出版社/メーカー: 技術評論社
- 発売日: 2014/10/31
- メディア: Kindle版
- この商品を含むブログ (1件) を見る
SourcetreeでのMergeにPhpStormを利用する
Sourcetreeでのコンフリクト解消時、デフォルトのマージツール(DiffMerge)が死ぬほど使いづらくて不便でした。
個人的にPhpStormのマージ画面が気に入っているので、そちらを使えないかと調べていたところ実施している方がおり、試しに設定してみました。
バージョンとか
今回使っているツール等のバージョンは以下の通りです。
- Macbook Air(OS X Yosemite)
- SourceTree ver2.3.1 (69)
- PhpStorm 2016.2.2
手順とか
まずはSorucetreeの設定画面を開きます。
[環境設定] > [Diff]を選択し、「外部 Diff / Merge」を確認します。
各項目を以下のように入力(選択)します。
- 差分表示ツール:
カスタム...
- Diffコマンド:
/Applications/PhpStorm.app/Contents/MacOS/phpstorm
引数:
diff $(cd $(dirname "$LOCAL") && pwd)/$(basename "$LOCAL") $(cd $(dirname "$REMOTE") && pwd)/$(basename "$REMOTE")
マージツール:
カスタム...
- Diffコマンド:
/Applications/PhpStorm.app/Contents/MacOS/phpstorm
- 引数:
merge $(cd $(dirname "$LOCAL") && pwd)/$(basename "$LOCAL") $(cd $(dirname "$REMOTE") && pwd)/$(basename "$REMOTE") $(cd $(dirname "$BASE") && pwd)/$(basename "$BASE") $(cd $(dirname "$MERGED") && pwd)/$(basename "$MERGED")
さいごに
これで使い慣れたツールを使ってMergeが出来るようになりました。
PhpStormマジ便利。買ってよかった...!
参考にしたページ
鶏つくねの甘辛だれ
先日スーパーで衝動買してしまったレンコンを片付けるべく、鶏つくねを作ってみました。
しその香りと甘辛なタレが食欲をそそります。
材料
鶏つくね
- 鶏挽き肉(今回は胸肉を利用)200g
- レンコン 小3個
- しいたけ 2個
- しそ 5枚
- 長ねぎ 1/2本
- 酒 大さじ1
- 塩 小さじ1
甘辛だれ
- みりん 50cc
- 醤油 大さじ3
- 砂糖 大さじ1.5
作り方
しいたけ、しそ、長ねぎはみじん切りにしておきます。
ボウルに材料をすべて入れ、粘り気が出るまで混ぜ続けます。
一口大に成形し、油をひいたフライパンに入れて焼きます。
いい具合に焼き色が付いたら裏返し、同様に焼き色がつくまで焼いていきます。
両面焼き色が付いたら甘辛だれの材料を全てフライパンに入れます。
たれを煮詰めつつ、つくねに絡めていきます。
つくねに照りが出て、たれにとろみが付いたら完成です。
そのままでも美味しいですが、卵黄に絡めるとより美味しく頂けました。
居酒屋などで食べるあのつくねの味が家でも...!
一口サイズなので、残ったらお弁当に入れられるのもいいですね。
とても満足の行くおかずになりました、ごちそうさま。
- 出版社/メーカー: 丸善
- メディア: 食品&飲料
- この商品を含むブログを見る