小编mgu*_*mon的帖子

Request.params在Play Framework 2.0中消失了

有没有办法访问所有请求参数,无论HTTP方法如何?我没有在Play Framework 2.0中找到方法,而是倾倒了文档和api.

我在一个接受POST和GET的网站上搜索.站点上的自定义跟踪会检查传入的所有参数,以确定存储跟踪数据的正确方法.

在Play Framework 1.2.x中,我能够从Controller中的请求访问参数

request.params.get("keywords")
request.params.get("location") 
request.params.all()
Run Code Online (Sandbox Code Playgroud)

使用Play Framework 2.0,情况已不再如此.该请求不再有方法params,只有queryString和查询字符串只适用于GET和POST没有.

将每个可能的跟踪参数定义到Controller Action中是不可行的,它们是动态的.


更新:可能的解决方法是使用Body Parsers.

根据请求的内容类型,使用适当的解析器,例如application/form-url-encodedapplication/json

这是结合POST参数和GET参数的原始Map,GET参数优先.

val params: collection.mutable.Map[String, Seq[String]] = collection.mutable.Map() 
params ++= request.body.asFormUrlEncoded.getOrElse[Map[String, Seq[String]]] { Map.empty } 
params ++= request.queryString 
Run Code Online (Sandbox Code Playgroud)

playframework-2.0

38
推荐指数
1
解决办法
1万
查看次数

rake db:migrate不起作用

我正在通过rails教程并且遇到困难.从代码清单8.16开始,我对以下内容进行了以下修改<timestamp>_add_remember_token_to_users.rb:

class AddRememberTokenToUsers < ActiveRecord::Migration
  def change
    add_column :users, :remember_token, :string
    add_index  :users, :remember_token
  end
end
Run Code Online (Sandbox Code Playgroud)

该指南随后说像往常一样更新dev&test db:

$ bundle exec rake db:migrate
$ bundle exec rake db:test:prepare
Run Code Online (Sandbox Code Playgroud)

我对*remember_token*的用户测试仍然失败,所以我使用命令行sqlite3 查看了dev和测试数据库中的用户表.它们看起来像这样:

sqlite> .schema users
CREATE TABLE "users" (
   "id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, 
   "name" varchar(255), 
   "email" varchar(255), 
   "created_at" datetime NOT NULL, 
   "updated_at" datetime NOT NULL, 
   "password_digest" varchar(255));
CREATE UNIQUE INDEX "index_users_on_email" ON "users" ("email");
Run Code Online (Sandbox Code Playgroud)

似乎我的迁移尚未运行,但我不知道如何强制它运行.

ruby-on-rails railstutorial.org

19
推荐指数
3
解决办法
4万
查看次数

可安装的发动机与cron(每当宝石)

是否可以使用cron(通过when gem)直接在可安装的引擎模型上运行任务.我认为cron无法从主应用程序启动,因为可安装引擎应该是隔离的.

我可以在普通的rails应用程序中使用它并且它工作得很好,但我需要以引擎方式运行任务.

谢谢

ruby ruby-on-rails whenever rails-engines

8
推荐指数
1
解决办法
485
查看次数

缩小Cassandra集群的最佳方法

所以有关于如何扩展Cassandra的相当数量的文档,但这是一个很好的资源,如何"卸载"Cassandra并从群集中删除节点?是否像关闭节点一样简单,让群集再次同步,然后重复?

原因是一个网站预计会出现高峰值的流量,几天内会从每日几千次点击上升到数十万次.该网站将提前"加速",启动Web服务器的多个实例,Cassandra等.在请求流量消退后,目标是关闭不再使用的实例,而不是支付服务器费用那只是坐着.

cassandra

7
推荐指数
1
解决办法
2249
查看次数

在 JRuby 中获取由字符串表示的 Java 类?(没有评估)

我想在 JRuby 中调用 Java 类的静态方法。目前为了实现这一点我使用:

class_name = "com.slackworks.naether.util.LogUtil"
clazz = eval(class_name)
clazz.setLogLevel( "debug" )
Run Code Online (Sandbox Code Playgroud)

必须使用 eval 将字符串转换为类似乎很笨拙。我环顾四周,但找不到 JRuby 助手来代替eval.


我需要将字符串转换为类的原因是,这种情况发生在通过 JRuby 或 RJB 处理请求的包装器中,具体取决于 Ruby 运行时。如果 Ruby 运行时使用 RJB,则调用将类似于:

class_name = "com.slackworks.naether.util.LogUtil"
clazz = Rjb::import( class_name )
clazz.setLogLevel( "debug" )
Run Code Online (Sandbox Code Playgroud)

reflection class jruby

5
推荐指数
1
解决办法
1122
查看次数

创建用于Logback的OutputstreamAppender

对于我的LogBack记录器,我试图以编程方式创建一个写入ByteArrayOutputStream 的OutputStreamAppender.这是我到目前为止:

// Destination stream
ByteArrayOutputStream stream = new ByteArrayOutputStream();

// Get LoggerContext from SLF4J
LoggerContext context = (LoggerContext)LoggerFactory.getILoggerFactory();

// Encoder
PatternLayoutEncoder encoder = new PatternLayoutEncoder();
encoder.setContext(context);
encoder.setPattern("%d{HH:mm:ss} %-5level %logger{36} - %msg%n");
encoder.start();

// OutputStreamAppender
OutputStreamAppender<ILoggingEvent> appender= new OutputStreamAppender<>();
appender.setName( "OutputStream Appender" );
appender.setContext(context);
appender.setOutputStream(printStream);
appender.setEncoder(encoder);

appender.start();

Logger log = context.getLogger(this.getClass());
log.addAppender(appender);

log.info( "text from logger");

// Output to stdout logback status
StatusPrinter.print(context);
Run Code Online (Sandbox Code Playgroud)

根据我读过的所有内容,这应该是正确的.Logger中没有任何内容写入流,并且OutputStreamAppender无法根据以下输出正确初始化StatusPrinter:

15:26:30,330 |-WARN in ch.qos.logback.core.OutputStreamAppender[OutputStream Appender] - Encoder has not been set. Cannot …
Run Code Online (Sandbox Code Playgroud)

java logback

5
推荐指数
1
解决办法
4062
查看次数

使用java将电子邮件转换为其原始格式

我一直尝试MimeMessage使用JavaMail api 创建一个类型的对象,然后获取它的原始表示,但没有成功.我唯一能获得的是电子邮件内容的原始表示,但不包括标题,主题或收件人.我感兴趣的任何建议,任何Java库,可以帮助我创建一个电子邮件对象,然后获得其原始表示.原始表示应该如下所示:

received: from imta14.emeryville.ca.mail.myisp.net ([nn.nn.30.46])
by alnrmxc19.isp.net (alnrmxc19) with ESMTP
id <20080930215116a19007q9u6e>; Tue, 30 Sep 2008 21:51:16 +0000
X-Originating-IP: [nn.nn.30.46]
Received: from libertatea.go ([nn.nn.161.160])
by IMTA14.mail.isp.net with isp
id M9qy1a00V3TwUto0E9rELB; Tue, 30 Sep 2008 21:51:15 +0000
X-Authority-Analysis: v=1.0 c=1 a=DZlucjOqAY8A:10 a=mnGO974OAAAA:8
a=9MJFf195B83LjESASTQA:9 a=Lm7NQ261g8eJHgoaELoA:7
a=7Narey355jFQWZRww2lj1r9-lCkA:4 a=8COHQAuY8ZYA:10 a=zEVpGHA-kecA:10
a=37WNUvjkh6kA:10
Received: by libertatea.go id hm1nfa0di0sn for <xxx@myisp.net>; Sun,30 Sep 2018 09:36:35
+0300 (envelope-from <Hometown.Quotes_ary@mousemegadot.com>)
Message-ID: <79864795@mousemegadot.com>
Date: Sun, 30 Sep 2018 09:36:35 +0300
From: "Hometown Quotes" <Hometown.Quotes_ary@mousemegadot.com> …
Run Code Online (Sandbox Code Playgroud)

java email

4
推荐指数
1
解决办法
2526
查看次数