Ruby on Rails をMSSQLに接続させる

RailsアプリのGemfile(拡張子がないけどテキストファイル)を開き、下記を追加します。

gem 'tiny_tds'
gem 'activerecord-sqlserver-adapter'

sqliteのgemは削除して問題ありません。


次に、configフォルダ配下のdatabase.ymlを開きます。
config/database.yml
development部分を下記に置き換えます。

development:
adapter: sqlserver
vmode: DBLIB
port: 接続先SQLサーバーがTCP/IPを通しているポート
host: 接続先サーバーのIPアドレス(またはマシン名)
database: データベース名
username: ユーザー名
password: パスワード
timeout: タイムアウト

以上、です。

gemを更新した場合は、Railsアプリのディレクトリにて下記コマンドをする必要があります。

bundle install

なお、接続先SQLサーバーのポートは、SQLサービスの設定とファイヤーウォールを通してあげる必要があります。

参考
特定の TCP ポートで受信待ちするようにサーバーを構成する方法 (SQL Server 構成マネージャー)

SQL Serverで外部から接続できるようにする方法

cannot load such file -- tiny_tdsが出た時の対処法

tiny_tdsを使用しようとして下記メッセージが頻発しました。

lib/tiny_tds.rb:22:in `require': cannot load such file -- tiny_tds/tiny_tds (LoadError)

日本語サイトで取り扱っているページが少なく、初めはRailsのバージョンのせい(Rails5から始めてしまったため)かと思いバージョン管理のアレコレを調べ、Rails4.2.7.1で試しても状況は変わらず...。

厄介なのが、出るときと出ないときがありまた、
rails server コマンドや
rails generate controller コマンドなどでも発生したことです。
変更を加えて試す、トライアンドエラーを繰り返している最中に、エラーなしの時があるのは、勘違いをしやすく途中で何をやっているのかわからない状況になってきていました。


前置きが少し長めになりましたが、結果としては
config/boot.rb に対して require 'bundler/setup' の前に require 'tiny_tds' を追加することで発生しなくなりました。


参考
tiny_tds.so not a valid win32 application #290

require 'tiny_tds'
require 'bundler/setup'

Maybe there's a better file to put it in for Rails init but it seemed like
much after that and it would blow up. If I get time I might try to look at
what is happening with psych loading first but can't spend time on it
immediately.

WindowsプログラマーがRuby on Railsを触ってみた

業務に活かせるかと思い、Ruby on Railsを触っています。
ぶち当たることが多く、忘備録代わりのこのブログを久しぶりに思い出しました。
忙しいって怖いですね。

Windows系でRailsの解説をしているサイトって少なくて、苦労しています。

まずは、Windowsでのアレコレは下記サイトが非常に参考になります。
RubyLife


まずはインストール
Rubyインストール

Railsインストール

記事自体が2014年10月くらいのものなので、バージョンが古いですが、特に問題なくインストールできるはずです。


Windowsでのチュートリアル
Ruby on Rails入門

WindowsでのRubyRailsの操作に慣れてきたら本家のチュートリアルを触ってみるといいと思います。
Ruby on Rails チュートリアル

nodeでtwitterのhome_timeline(自分のタイムライン)を取得する方法

こちらの続きです。
今のところの目標は、ElectronでTwitterクライアントを作ることです。
WindowsプログラマーJavaScript、HTMLなどを真面目にやったことがありません。

現在、Node.jsを使ってTwitterAPIを叩きたいといったところです。
なぜかうまくいかないので、とりあえずうまくいったStreamを使用したタイムラインの取得です。
(※日本語記事が少なかったので別投稿にしています。)

1.各種Keyの取得(開発者登録)

少しページが長いですが、下記や「Consumer Key」で検索してください。
Twitter APIの使い方まとめ

※いつからかはわかりませんが、電話番号を登録しているTwitterアカウントが必要です。


2.モジュールをインストール

インストールしているとnode-twitterが面倒なことをやってくれます。

npm install twitter


3.stream_sample.jsを作る

// twitterモジュールを読み込み
var twitter = require('twitter');

// アプリ登録時に取得したkeyを入れてOAuth認証し、初期化
var client = new twitter({
    consumer_key: '【Consumer Keyの内容】',
    consumer_secret: '【Consymer Secretの内容】',
    access_token_key: '【Access Token Keyの内容】',
    access_token_secret: '【Access Token Secretの内容】'
});

client.stream('user', {},  function(stream) {
    stream.on( 'data', function( data ) {
        var text = data.text; // ツイートのテキスト
        console.log( text );
    });
});

実行結果

undefinedが気になりますが...。

参考
自分宛のリプライをリアルタイムに受け取る場合は以下が素敵です。
Node.jsで作るTwitter通知アプリケーション〈Node.jsシリーズ vol.3〉

自分のタイムラインを取得する方法は以下を参考にしました。
twitter load home_timeline of user using streams?

続きを読む

WindowsプログラマーがElectronをやるために2

前回の続きです。

実際に下記を試してみました。
20 行で作る node.js による Twitter bot 作成講座

動きませんでした。

なぜかfunctionじゃないですよ。って言われてますね。
念のため、node-twitterGitHubも見に行ったのですがダメでした。
Sampleにも書かれているのに。


下記なども試してみたが、うまくいきません。
Node.jsでTwitter API v1.1 を叩くには?

何かうまくいくものを探していたら、Streamはどうやらうまく行くみたいなので、自分のタイムライン取得をしてみました。
home timelineの日本語記事が少なかったので、せっかくなので別記事にしました。
nodeでtwitterのhome_timeline(自分のタイムライン)を取得する方法

WindowsプログラマーがElectronをやるために

JavaScriptで動作を記述
・HTMLとの関係はMVCに近い(WEB的には当然?)
ちなみにJavaScriptはちょこっと書ける程度で、よくは知りません。
また、WEB系で言うところのフロントエンドも全くです。

まずはJavaScriptついでにNode.jsを覚えないといけないです。
Windows ではじめてみる Node.js

上記ページのnodistのインストールではうまくいかなかったため下記ページを参考にしました。
node.js インストール備忘録(windows7)


しかし途中の

request モジュールをインストールしてみます。
Windows ではじめてみる Node.js

$ node install request
Windows ではじめてみる Node.js

となっていますが
「npm install request」だと思われます。

また、

"dependencies" : {
"request": ">=1.0.0", // 1.0.0以上
"async": "*",
}
Windows ではじめてみる Node.js

"dependencies" : {
    "request": ">=1.0.0",
    "async": "*"
}

と日本語なしのコンマなしでやらないと通りませんでした。



一通りやったら下記のページを参照に勉強を進めたいと思います。
20 行で作る node.js による Twitter bot 作成講座

ElectronでA JavaScript error occurred in the main processが出た。

This article was I postscript in English.(2016/01/21)

Electronを始めたばかりです。
WEB系の技術は読める程度でスラスラ書けるわけではないので、サクっと動作を確認してみたく下記サイトを参考にチュートリアってみました。
Electronでデスクトップウィジェットを作るまで

ところが初っ端から表題のエラーが出ました。
「A JavaScript error occurred in the main process」


少し長くなりそうなので結論

package.json文字コードANSI以外になっていませんか?


私の場合は以前VisualStudioで編集するとUTF-8ANSIに変換されているといった現象にあったことがあり、チュートリアル中にほぼ無意識でメモ帳で開きANSIからUTF-8に保存しなおしていました。

ちなみに2016/01/20現在、Googleで「electron a javascript error occurred in the main process」と検索する下記ページも見てましたが、同じSyntaxErrorでも

SyntaxError: missing ) after argument list
Electronを実行するとdefault_app.jsが動く場合に疑ってみるポイント。

とあり、今回の
「SyntaxError: Unexpected token」
とは違います。

続きを読む