問題タブ [sinatra]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
ruby - JRuby-Rack Sinatra Warbler Projectのアーチタイプはありますか?
必要なすべての依存関係をすべて備えたWARデプロイメントファイルを作成するjruby+Rack + Sinatraプロジェクトのプロジェクトアーキタイプ(またはrubyコミュニティが呼んでいるもの)はありますか?
私が欲しいのは、ant/rakeスクリプトと基本的なディレクトリ階層がすべてすぐに使える状態ですぐに使えるプロジェクトを作成する「railsappname」に相当するものです。
そのような獣は存在しますか?
ruby - Ebb WebサーバーでRuby(Sinatra)アプリを実行する方法を試します
SinatraでWebリクエストを処理するための超高速Rubyアプリケーションを作成する必要があり、 EbbWebサーバーで実行したいと考えています。しかし、私はこれを行う方法を理解することはできません。誰か助けてくれませんか?
ruby - HTMLフォームをremote.cgiにPOSTする-Rubyで書かれていますか?
私はマイクロソフトのオフィスライブサービスでホストされているWebサイトで作業しています。訪問者が所有者と連絡を取ることができる連絡フォームがあります。別のサーバーに配置され、フォームがPOSTされるRubyスクリプトを作成したいと思います。フォームデータを解析し、詳細を事前設定されたアドレスに電子メールで送信します。次に、スクリプトはブラウザを確認ページにリダイレクトする必要があります。
私はnginxとpostfixを実行しているubuntuの丈夫なマシンを持っています。Rubyがインストールされ、ThinとそのRack機能を使用してスクリプトを処理する方法について説明します。今度はスクリプトを書くことになり、私は空白を描きました。
久しぶりですが、正しく覚えていれば、そのプロセスは次のようなものです。
- HTTPヘッダーを読み取る
- パラメータを解析します
- メールを送る
- リダイレクトヘッダーを送信する
大まかに言えば、質問は答えられました。答えの使い方を考えるのは予想以上に複雑で、共有する価値があると思いました。
最初のステップ:
私は、nginxがcgiスクリプトを直接サポートしていないことを突然知りました。スクリプトを実行し、nginxにプロキシリクエストを送信するには、他のプロセスを使用する必要があります。もし私がこれをphpでやっていたとしたら(後から考えるともっと自然な選択だったと思います)、php-fcgiのようなものを使うことができ、人生はかなり簡単だと期待できます。
Rubyとfcgiはかなり気が遠くなるように感じました。しかし、実行時にこれらのものをロードするという理想を放棄する場合、Rackはおそらく最も簡単なソリューションであり、Thinには必要なものがすべて含まれています。それらを使って基本的な小さなアプリを作成する方法を学ぶことは、私のような比較的Railsの新参者にとって非常に有益でした。Railsアプリの基盤は長い間隠されているように見えることがあり、Rackは私がカーテンを少し持ち上げるのを助けてくれました。
それにもかかわらず、イェフダのアドバイスに従い、シナトラを調べることは別の驚きでした。これで、Thinインスタンスで実行されている基本的なsinatraアプリができました。それは私が収集するものが標準的な方法であるUNIXソケットを介してnginxと通信します。Sinatraは、アプリへのさまざまなリクエストやルートを処理するための非常にエレガントな方法を可能にします。必要なのはget '/' {}
、仮想ホストへのリクエストの処理を開始することだけです。さらに(クリーンな方法で)追加するには、routes/script.rbをメインファイルに含めるだけです。
これらのルートファイルは、クラスの別のライブラリに保存されている機能を呼び出します。
そのような単純なことを理解することの全くの恐怖は、しばらくの間私にとどまります。.rbファイルが実行されることをnginxに冷静に知らせ、それを実行することを期待していました。この小さなsinatraアプリが稼働しているので、将来機能を追加したい場合は、すぐに飛び込むことができます。
実装:
ContactPostクラスは、メッセージングの側面を処理します。知っておく必要があるのは、リクエストのパラメータとメールのターゲットだけです。ContactPost :: actionはすべてを開始し、コントローラーがリダイレクトするアドレスを返します。
指定されたターゲットがrequest.referrerで指定されたURLからのメッセージを受け入れることを確認するために、何らかの認証を行う別のContactTargetクラスがあります。これはContactTarget::acceptで処理されますか?ContactPost::actionメソッドから推測できるように;
ContactPost::successfulとContactPost::failedはそれぞれ、HTMLフォームで提供されたパスをrequest.referer URIと組み合わせることにより、リダイレクトアドレスを返します。したがって、すべての動作はHTMLフォームで指定されます。このスクリプトを使用する将来のWebサイトは、ユーザー自身の〜/ cgi / contact.confにリストする必要があり、それらは削除されます。これは、ContactTargetが/home/:target/cgi/contact.confで詳細を検索するためです。いつかこれは不適切かもしれませんが、今のところ私の目的には問題ありません。
sendメソッドは非常に単純で、単純なEmailクラスのインスタンスを作成して出荷します。Emailクラスは、Ruby net/smtpのドキュメントに記載されている標準的な使用例にほぼ基づいています。
私がする必要があるのは、アプリケーションをラックアップし、nginxにどのソケットと通信するかを知らせることだけです。
正しい方向への有益な指針をありがとうございました!長生きするシナトラ!
validation - ネストされたモデルを検証していますか?
より具体的には、「モデルが少なくとも x 個の有効な関連付けられたモデルを作成する必要があることを検証するにはどうすればよいですか?」. 私は、親と同じ形式で作成されたネストされたモデルを検証しようとしています (最終的には jQuery ですぐに検証を表示します)。一般的な例として、次のモデルとスキーマを想定してみましょう。
ご覧のとおり、すべての検証はスキーマ定義で行われます。ここで重要なのは「has 2..n, :tasks
」です。params ハッシュ内のネストされたタスク属性が有効なタスクを生成する場合、この検証は実際には正常に機能します。ただし、無効なタスクが生成された場合、そのタスクは作成されず、タスクが 2 つ未満のプロジェクトになり、無効なプロジェクト オブジェクトになります。
私が理解しているように、これは、タスクを保存しようとするまで、タスク属性が有効かどうかを判断できないためです。また、私の知る限り、タスクはプロジェクトの前に保存できないため、プロジェクトは、タスクが有効かどうかを認識していません。これを仮定するのは正しいですか?
とにかく、私は迅速な答えがあることを望んでいましたが、私が望んでいたよりもはるかに些細なことではないようです. 何か提案があれば、それは大歓迎です。
iphone - Mac なしで iPhone アプリを開発しますか?
妻の携帯電話用の iPhone アプリを構築しようと考えていますが、1 回限りの作業の開発プラットフォームとして Mac を購入することに興味はありません。アプリ:
- iPhone上でスタンドアロンで実行する必要があります(つまり、ネットワーク接続なしで)
- 周りにあるiPhone Javascriptライブラリの1つを使用して作成されたGUIで完全に受け入れられます
- データの読み取りと更新のためにデータベース IO を実行します
- 商業的価値がなく、他の人が使用することはありません
ここに私の考えがあります:
- iPhoneを脱獄する
- Ruby + Sinatra を iPhone にインストールする
- Sinatra を使用してアプリを作成し、iPhone でデータベース (SQLite?) にアクセスします。
iPhone でアプリにアクセスするには:
- バックグラウンドで Sinatra アプリを起動します (これは可能ですか?)
- Safari ブラウザ セッションを開始する
- http://localhost:12345などの Sinatra アプリに移動します。
- 等
これは奇妙なアプローチのように思えますが、Mac を購入せずにスタンドアロンの iPhone アプリを作成するより簡単な方法は思い浮かびません。これを行うより良い方法はありますか?
ruby - HerokuベースのSinatraアプリを作成する方法
運がなくてもSinatraベースのherokuアプリを作成しようとしていますか?
ruby - Sequel gemのデメリット
Sinatra ベースのアプリで作業する場合、Sequel ORM に代わるものはありますか?
ruby - Compojure/Sinatra アプリケーションのデプロイ
compojure/sinatra アプリケーションを展開するための推奨される方法は何ですか? ホスト上で複数のサイトを実行しているため、ポート 80 で jetty/mongrel を実行できません。同じホストで実行されている複数のサイト/アプリケーションをどのように処理すればよいですか?
ruby - シナトラのサーバープッシュ?
Sinatra で書かれたサーバーからクライアントにデータをプッシュする最良の方法は何ですか? チャット ルームと同様に考えますが、Ajax が 2500 ミリ秒ごとにポーリングすることはありません。
Rails の Juggernaut は知っていますが、Sinatra に興味がありました。
mysql - Sequel + Sinatra + Phusion Passenger + MySQL 接続管理
小さな API 実装に Sinatra と Sequel を使用しています。ただし、問題は、すべてのページ リクエストで Sequel が MySQL への新しい接続を開き、タイムアウトするか、Apache を再起動するまで開いたままにすることです。
接続を再利用する方法に関するドキュメントはあまりないため、正しい方向へのヘルプ、説明、および/またはポインタが役立ちます。