2016-06-15 20 views
17

光り輝くアプリを開発しています。機能の自動テストとドキュメントを使用したいので、パッケージ内でインターフェイスを開発しました(推奨here)。パッケージとして光沢のあるアプリを開発し、それを光沢のあるサーバーに展開する

私はRStudio内でこの光沢のあるアプリを開発していますが、私はRun Appボタンをクリックすると、RSTudio内のserver.Rファイルを持っています。私はパッケージをgithubリポジトリにコミットしています。この時点から私はR光沢のあるサーバにインストールしたいと思います。devtoolsinstall_githubの機能を使用しています。

今、私はサーバー内で自分のアプリケーションを起動する方法が不思議です。私は、パッケージをインストールしてserver.Rファイルを指し示すことを馬鹿に考えていましたが、これは何とか動作しません。問題がどこにあるかわからない。

私の2回目の試行では...私は基本的に私のパッケージ、光沢のある、その他の必要なパッケージをロードしますが、それは何らかの形で見つからないため、変数を訴える光沢のあるサーバがこのファイルにアクセスできるフォルダにapp.Rという名前のファイルを作成していた

誰かからアドバイスをいただけますか?私はこの問題を正しく尋ねる方法がわからないので、どんな質問にもお答えできます。 ありがとうございます。 コリン・Dはコメントで求めていたので、光沢のあるサーバー上でこれらのパッケージを展開する方法、光沢のあるサーバーに

を展開

EDITは、私はこれを行う方法を紹介したかったです。

まず、私のパッケージを光沢のあるサーバーに、ルートというコマンドラインで次のコマンドで直接インストールします。

su - -c "R -e \"devtools::install_github('user/shinypackage')\"" 

次のステップは、その後、私は、これがキャッシュまたはそうと時々問題があったので、光沢のあるサーバを再起動するパッケージフォルダ

chown -R shiny:shiny /usr/local/lib/R/site-library/shinypackage/ 

の所有者を変更することです。

systemctl restart shiny-server 

これらは、光沢のあるアプリケーションを更新するときの手順です。私たちはまだやる必要がある

su - -c "R -e \"devtools::install_github('user/shinypackage')\"" & chown -R shiny:shiny /usr/local/lib/R/site-library/shinypackage/ & systemctl restart shiny-server 

ことの一つは、セットアップにshiny-server.confファイル内のディレクトリである単一のラインでrootとして再び正常にこれを行います。私はちょうどui.Rserver.Rが保存されているパッケージパス+アプリケーションディレクトリを追加しました。

location /shinypackage { 
    app_dir /usr/local/lib/R/site-library/shinypackage/application; 
    log_dir /var/log/shiny-server; 
    } 

それから私はsystemctl restart shiny-serverを使用することによって、再び、サーバーを再起動する必要があります。

これはUbuntu Server上で使用されています。私は、スタンドアロンパッケージとして光沢のあるアプリケーションを作成するとき

+0

私はルーチンとしてこれを行います。私は自分のアプリケーションファイルをパッケージの 'inst'ディレクトリに置き、' launch_application'という関数をインクルードしています。これは単に 'runApp'を私の望むデフォルト引数で呼び出します。 appファイルは 'system.file'で見つかります。 – Benjamin

+0

私が探しているもののようなものです。どのファイルが 'inst'フォルダにありますか? 'launch_application'関数と' library'呼び出しの呼び出しだけですか?私は各機能を 'R'フォルダの余分なファイルに入れているので、私はそれらをエクスポートしてパッケージをロードすることができると期待しました... – drmariod

答えて

15

、私は通常のようにファイルを整理:Rディレクトリで

  • アプリケーションをサポートするための私の方法のすべて(これらがすべき彼らはui.Rserver.R、またはglobal.Rファイルのいずれかで使用される場合
  • launch_application機能
)エクスポートします

  • application/server.R
  • application/ui.R
  • application/global.R

構築し、インストールした後工大ディレクトリで

launch_application <- function(x, ...) 
{ 
    shiny::runApp(appDir = system.file("application", package = [my_pkg]), 
       ...) 
} 

launch_applicationの定義と同様ですパッケージ、私はちょうど実行する必要があります

library(my_pkg) 
launch_application(...) 
+0

ああ、今私はそれを得ました...だから' server.R'と 'ui。 R'は 'application'フォルダに入り、' R'フォルダには私の関数だけが残ります。私はそれを試してみましょう... – drmariod

+0

もう1つの具体的な質問...私は 'DT :: renderDataTable'を私のサーバーファイルに使用しています。実際にライブラリをロードする場所はどこですか?私はまず 'DT'を' DESCRIPTION'ファイルに依存させていました。なぜなら 'server.R'をアプリケーションディレクトリに移動してからパッケージをビルドしている間に、私はすべての依存関係を使いません。 – drmariod

+1

'' Suggests'の下に 'DT'を挙げてください。あなたはうまくいくはずです。 – Benjamin

関連する問題