ClojureScriptに手を出したのですが、lein depsがエラーを吐いてしまったので、ここで一つ、leiningen 2(lein2)に移行してみようと思ったわけです。
1から2へのアップグレード方法が本家のここのページにあるので、これに沿ってやってみた作業のログです。
ちなみに、環境はWindows7で、ファイル操作はEmacsのeshellでやっています。
こうしろと書いてありますが、以前インストールした場所で作業します。
そこそこ時間が掛ります。
バージョンを確認してみる。
現状が以下の様になっていたら、
~/.lein/profiles.clj ファイルを以下のように書けとのこと。1つ増えちゃってるのは御愛嬌かな?
自分の環境を確認してみると、
どう見ても、lein-swank と swank-clojure 同じものなので、swank clojureのサイトを確認してみるとやっぱり
~/.lein/profiles.cljは存在しなかったので、作成しました。
lein1のプロジェクトで lein precate とすると、lein2用の設定についてのアドバイスが貰えるそうなので、その通りにコマンドを打ってみますが、うまく行きません。
さっき設定したlein-swankがインストールされましたが、precateはでてきません。なぜでしょう。
「The plugin task has been removed.」って書いてあるので、pluginタスクはもう使えないぞって言ってるようです。Upgradeのページを見ろって書いてありますけど、いやいや、そこを見てやってるんだってば。
lein-precateのサイトに行ってみると、このプラグインはlein1で使うようにできてますって書いてある。なにそれ。
まあ、lein1は、lein1.batになっているので、これでインストールします。
なるほど。古いproject.cljから修正版を作ってくれるんですな。
:dev-dependenciesの項目は:profilesの項目に書き変ってますね。あと、「:min-lein-version "2.0.0"」っていうエントリが追加されてます。
何も確認せずにそのまま使えないかもしれませんけど、便利だね。
src/core.clj を src/core.cljs にリネームして、編集します。
あらあら。おこられた。このサンプルまちがってるじゃん。
気を取りなおして実行。
できました。確認すると、プロジェクトのルートにmain.jsが出きています。ここからのパスを指定するということらしいですね。
できたので、これを使ってみます。
こんなファイルをつくって、ブラウザで開いて、アラートが表示されたのでOKでした。
今日はここまで。
1から2へのアップグレード方法が本家のここのページにあるので、これに沿ってやってみた作業のログです。
ちなみに、環境はWindows7で、ファイル操作はEmacsのeshellでやっています。
古いLeiningen(Leiningen1)を退避します。
手順には
$ mv ~/bin/lein ~/bin/lein1
こうしろと書いてありますが、以前インストールした場所で作業します。
d/u/q/D/clojure/leiningen $ ls -l
total 402
-rwxrwxrwx 1 q3197c Domain U 5227 7 31 19:02 lein.bat
-rwxrwxrwx 1 q3197c Domain U 401408 12 14 2010 wget.exe
d/u/q/D/clojure/leiningen $ mv lein.bat lein1.bat
d/u/q/D/clojure/leiningen $ ls -l
total 397
-rwxrwxrwx 1 q3197c Domain U 5227 7 31 19:02 lein1.bat
-rwxrwxrwx 1 q3197c Domain U 401408 12 14 2010 wget.exe
Version2 のlein.batを取ってきます。
本家のサイトのインストールのところにある、「the batch file」のリンク(ここでもOK)からlein.batをもってきて、同じ場所に置きます。
d/u/q/D/clojure/leiningen $ ls -l
total 402
-rwxrwxrwx 1 q3197c Domain U 5425 8 3 14:41 lein.bat
-rwxrwxrwx 1 q3197c Domain U 5227 7 31 19:02 lein1.bat
-rwxrwxrwx 1 q3197c Domain U 401408 12 14 2010 wget.exe
インストール
以前wgetは入手済みなので、このまま進みますが、無ければ探してきて入れてください。そこそこ時間が掛ります。
d/u/q/D/clojure/leiningen $ lein self-install
Downloading Leiningen now...
--2012-08-03 14:44:24-- https://cloud.github.com/downloads/technomancy/leiningen/leiningen-2.0.0-preview7-standalone.jar
..略..
Saving to: '----/.lein/self-installs/leiningen-2.0.0-preview7-standalone.jar'
0K .......... .......... .......... .......... .......... 0% 9.37K 17m50s
..略..
10050K .......... .......... ......... 100% 44.9K=10m40s
2012-08-03 15:09:35 (15.7 KB/s) - `----/.lein/self-installs/leiningen-2.0.0-preview7-standalone.jar' saved [10321086/10321086]
バージョンを確認してみる。
d/u/q3197c/.m2 $ lein version
(ここでいくつかのモジュールがインストールされる)
Leiningen 2.0.0-preview7 on Java 1.6.0_31 Java HotSpot(TM) Client VM
ちゃんとLein2になってますプラグインの移行
lein2 ではプラグインの扱いが大きく変ったとのこと。現状が以下の様になっていたら、
$ ls ~/.lein/plugins
lein-difftest-1.3.8.jar lein-marginalia-0.7.1.jar lein-swank-1.4.4.jar
~/.lein/profiles.clj ファイルを以下のように書けとのこと。1つ増えちゃってるのは御愛嬌かな?
{:user {:plugins [[lein-difftest "1.3.8"]
[lein-marginalia "0.7.1"]
[lein-pprint "1.1.1"]
[lein-swank "1.4.4"] ]}}
自分の環境を確認してみると、
d/u/q/.lein/plugins $ ls
swank-clojure-1.3.4.jar
どう見ても、lein-swank と swank-clojure 同じものなので、swank clojureのサイトを確認してみるとやっぱり
Add [lein-swank "1.4.4"] to the :plugins section of either project.clj or your user profile.
(lein2を使っているなら、[lein-swank "1.4.4"]を追加する)
If you are still using Leiningen 1.x, you will need to do lein plugin install swank-clojure 1.4.2 instead.と書いてあります。なので、現状のプラグインは、swank-clojureですが、lein-swankを入れます。
(lein1を使っているなら、swank-clojureをインストールする)
~/.lein/profiles.cljは存在しなかったので、作成しました。
d/u/q3197c/.lein $ cat profiles.clj
{:user {:plugins [[lein-swank "1.4.4"] ]}}
Precate
手順を見ると、次にはPrecateをインストールせよとあります。lein1のプロジェクトで lein precate とすると、lein2用の設定についてのアドバイスが貰えるそうなので、その通りにコマンドを打ってみますが、うまく行きません。
$ lein plugin install lein-precate 0.3.1
Could not find artifact lein-swank:lein-swank:pom:1.4.4 in central (http://repo1.maven.org/maven2)
Retrieving lein-swank/lein-swank/1.4.4/lein-swank-1.4.4.pom (1k)
from https://clojars.org/repo/
Could not find artifact lein-swank:lein-swank:jar:1.4.4 in central (http://repo1.maven.org/maven2)
Retrieving lein-swank/lein-swank/1.4.4/lein-swank-1.4.4.jar (109k)
from https://clojars.org/repo/
The plugin task has been removed.
Please see the upgrade guide for instructions on how to use the user profile to
specify plugins instead: https://github.com/technomancy/leiningen/wiki/Upgrading
さっき設定したlein-swankがインストールされましたが、precateはでてきません。なぜでしょう。
「The plugin task has been removed.」って書いてあるので、pluginタスクはもう使えないぞって言ってるようです。Upgradeのページを見ろって書いてありますけど、いやいや、そこを見てやってるんだってば。
lein-precateのサイトに行ってみると、このプラグインはlein1で使うようにできてますって書いてある。なにそれ。
まあ、lein1は、lein1.batになっているので、これでインストールします。
$ lein1 plugin install lein-precate 0.3.1
[INFO] Unable to find resource 'lein-precate:lein-precate:jar:0.3.1' in repository central (http://repo1.maven.org/maven2)
Including lein-precate-0.3.1.jar
Created lein-precate-0.3.1.jar
入りました。Precate使ってみます。
$ cat project.clj
(defproject score_card "0.1.0"
:description "Web app."
:dependencies [[org.clojure/clojure "1.3.0"]
[postgresql/postgresql "9.1-901.jdbc4"]
[org.clojure/java.jdbc "0.2.1"]
[ring/ring-jetty-adapter "1.0.1"]
[compojure "1.0.1"]
[hiccup "0.3.8"]
[sandbar/sandbar "0.4.0-SNAPSHOT"]]
:dev-dependencies [[clj-stacktrace "0.2.4"]
[ring-serve "0.1.2"]]
:web-content "public"
:repositories {"sonatype-oss-public"
"https://oss.sonatype.org/content/groups/public/"})d/u/q/w/clojure/score_card $
$ lein1 precate
(defproject score_card/score_card "0.1.0"
:dependencies [[org.clojure/clojure "1.3.0"]
[postgresql/postgresql "9.1-901.jdbc4"]
[org.clojure/java.jdbc "0.2.1"]
[ring/ring-jetty-adapter "1.0.1"]
[compojure "1.0.1"]
[hiccup "0.3.8"]
[sandbar/sandbar "0.4.0-SNAPSHOT"]]
:web-content "public"
:profiles {:dev
{:dependencies
[[clj-stacktrace "0.2.4"] [ring-serve "0.1.2"]]}}
:repositories {"sonatype-oss-public"
"https://oss.sonatype.org/content/groups/public/"}
:min-lein-version "2.0.0"
:description "Web app.")
なるほど。古いproject.cljから修正版を作ってくれるんですな。
:dev-dependenciesの項目は:profilesの項目に書き変ってますね。あと、「:min-lein-version "2.0.0"」っていうエントリが追加されてます。
何も確認せずにそのまま使えないかもしれませんけど、便利だね。
lein2を使ってみる
インストールできたので、clojure scriptのプロジェクトに再挑戦。
$ lein new cljstest
project.cljを編集。 ここのサンプルを参考にしました。
(defproject cljstest "1.0.0-SNAPSHOT"
:plugins [[lein-cljsbuild "0.2.3"]]
:cljsbuild {
:builds [{
:source-path "src" ; もともとあるところを使う
:compiler {
:output-to "main.js" ; サンプルは深いところだったので、とりあえず裸を指定
:optimizations :whitespace
:pretty-print true}}]})
src/core.clj を src/core.cljs にリネームして、編集します。
(ns cljstest.core)
(.alert js/window "Hello")
で、
$ lein cljsbuild once
Compiling ClojureScript.
java.lang.Exception: lein-cljsbuild requires your project to specify which Clojure version it uses
あらあら。おこられた。このサンプルまちがってるじゃん。
(defproject cljstest "1.0.0-SNAPSHOT"
:dependencies [[org.clojure/clojure "1.4.0"]] ;追加
:plugins [[lein-cljsbuild "0.2.3"]]
:cljsbuild {
:builds [{
:source-path "src"
:compiler {
:output-to "main.js"
:optimizations :whitespace
:pretty-print true}}]})
気を取りなおして実行。
$ lein cljsbuild once
Compiling ClojureScript.
(たくさんライブラリをダウンロード....)
Compiling "main.js" from "src"...
Successfully compiled "main.js" in 9.902396425 seconds.
できました。確認すると、プロジェクトのルートにmain.jsが出きています。ここからのパスを指定するということらしいですね。
d/u/q/w/clj-script/cljstest $ ls
README classes main.js project.clj src target test
できたので、これを使ってみます。
<html>
<head>
<title>cljstest</title>
</head>
<body>
<script type="text/javascript" src="main.js"></script>
</body>
</html>
こんなファイルをつくって、ブラウザで開いて、アラートが表示されたのでOKでした。
今日はここまで。
0 コメント:
コメントを投稿