小编Cam*_*nes的帖子

未定义的方法attr_accessible

我对rails很新,我正在尝试创建用户登录.我浏览了这里的教程.最后它让我为质量分配添加"attr_accessible".但是,当我这样做时,我收到以下错误:

undefined method `attr_accessible' for #<Class:0x007ff70f276010>
Run Code Online (Sandbox Code Playgroud)

我在这篇文章中看到我需要<ActiveRecord :: Base.但我确实包含了这一点.这是我的用户模型的代码:

class User < ActiveRecord::Base

  attr_accessor :password
  EMAIL_REGEX = /\A[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,4}\z/i
  validates :username, :presence => true, :uniqueness => true, :length => { :in => 3..20 }
  validates :email, :presence => true, :uniqueness => true, :format => EMAIL_REGEX
  validates :password, :confirmation => true #password_confirmation attr
  validates_length_of :password, :in => 6..20, :on => :create
  before_save :encrypt_password
  after_save :clear_password
  attr_accessible :username, :email, :password, :password_confirmation

  def encrypt_password
    if password.present?
      self.salt = BCrypt::Engine.generate_salt
      self.encrypted_password= …
Run Code Online (Sandbox Code Playgroud)

ruby ruby-on-rails

35
推荐指数
3
解决办法
5万
查看次数

JAXB Unmarshalling不起作用.预期要素是(无)

我正在尝试解组XML.

这就是我的XML的样子

<DeviceInventory2Response xmlns="http://tempuri.org/">
<DeviceInventory2Result xmlns:i="http://www.w3.org/2001/XMLSchema-instance">
  <Obj123 xmlns="">
     <Id>1</Id>
     <Name>abc</Name>
  </Obj123>
  <Obj456 xmlns="">
  .
  .
  .
Run Code Online (Sandbox Code Playgroud)

我想在Obj123下获得Id和Name.但是,当我运行我的unmarshal命令时,我收到以下错误.

An Error:  javax.xml.bind.UnmarshalException: unexpected element (uri:"http://tempuri.org/", local:"DeviceInventory2Response"). Expected elements are (none)
Run Code Online (Sandbox Code Playgroud)

我的代码在主类中看起来像这样:

Obj123 myObj123 = (Obj123) unmarshaller.unmarshal(inputSource);
Run Code Online (Sandbox Code Playgroud)

而我的Obj123课程看起来像这样:

package com.myProj.pkg;

import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlElementWrapper;
import javax.xml.bind.annotation.XmlRootElement;
import javax.xml.bind.annotation.XmlType;


@XmlRootElement(name="Obj123")
public class Obj123 {

  private String Id;
  private String Name;

  public String getId() {
    return Id;
  }

  public String getName() {
    return Name;
  }
}
Run Code Online (Sandbox Code Playgroud)

我想通过设置我的XMLRootElement我应该能够跳过我的XML的前两行,但这似乎并没有发生.有任何想法吗?

编辑:

这就是我的JAXB上下文的制作方式:

JAXBContext jaxbContext = JAXBContext.newInstance();
Unmarshaller unmarshaller …
Run Code Online (Sandbox Code Playgroud)

java jaxb unmarshalling

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

Powermock(使用Easymock)没有最后一个可用的模拟电话

我试图运行一个简单的测试用例.我有以下方法.

public static void run(String[] args) throws Throwable {
    CommandLineArguments opts = CommandLineOptionProcessor.getOpts(args);
}
Run Code Online (Sandbox Code Playgroud)

我将继续构建此方法/测试用例.但是我只是想确保一个简单的测试用例先工作.所以我写了下面的测试.

@Test
public void testRun() {
    String[] args = {"--arg1", "value", "--arg2", "value2"};

    mockStatic(CommandLineOptionProcessor.class);
    expect(CommandLineOptionProcessor.getOpts(args));

    EasyMock.replay(CommandLineOptionProcessor.class);
}
Run Code Online (Sandbox Code Playgroud)

之后我收到以下错误:

java.lang.IllegalStateException: no last call on a mock available
Run Code Online (Sandbox Code Playgroud)

我在StackOverflow上阅读了一些其他帖子,但他们的解决方案似乎是他们在Mockito上使用了PowerMock.我正在使用Powermock和Easymock,所以这应该不是问题.

我遵循了Rene的建议并将以下内容添加到了我的班级.

@PrepareForTest(CommandLineOptionProcessor.class)
@RunWith(PowerMockRunner.class)
public class DataAssemblerTest {
Run Code Online (Sandbox Code Playgroud)

我修复了上一个错误.但现在我有这个错误.

java.lang.IllegalArgumentException: Not a mock: java.lang.Class
at org.easymock.internal.ClassExtensionHelper.getControl(ClassExtensionHelper.java:61)
at org.easymock.EasyMock.getControl(EasyMock.java:2172)
at org.easymock.EasyMock.replay(EasyMock.java:2074)
.
.
.
Run Code Online (Sandbox Code Playgroud)

关于可能导致这种情况的任何想法都会很棒.

java junit unit-testing easymock powermock

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

Tesseract 不读取某些数字

我开始编写一个简单的脚本来从图像中读取数据。这是我的 Ruby 代码,它使用 RTesseract 来读取它:

require 'rtesseract'
require 'mini_magick'

RTesseract.configure do |config|
    config.processor = "mini_magick"
end

image = RTesseract.new("myImage.jpg")
puts image.to_s
Run Code Online (Sandbox Code Playgroud)

我从这张图片开始:

在此输入图像描述

返回的结果是:132B 4

我知道 0 作为 B 返回(我可以解决这个问题)。但下面的3,,根本没有返回08现在我知道它已经知道如何读取 3 和 0,因为它在第一个数字中做到了。我认为渲染以下数字时存在一些问题,因此我将其设为黑白。

这是我尝试的第二张图片:

在此输入图像描述

然而结果仍然是:132B 4

最后我剪切了图像并尝试了最后 3 个数字。

这是图像:

在此输入图像描述

但是当我运行脚本时,它没有返回任何结果。关于为什么我无法读取最终数字有什么想法吗?

我正在使用 Ruby 2.2.2、rTesseract 2.1.0 和 MiniMagick 4.5.1。

我正在使用 Tesseract 3.04.01

ruby ocr tesseract minimagick

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

Java Logger:创建以轮转号+.log为后缀的文件

我正在使用 java.util.logging 包中的 Java Logger。这就是我当前创建记录器的方式:

FileHandler fileHandler = new FileHandler(filePath, 5242880, 5, true);
fileHandler.setFormatter(new java.util.logging.Formatter() {
  @Override
  public String format(LogRecord logRecord) {
    if(logRecord.getLevel() == Level.INFO) {
      return "[INFO  " + createDateTimeLog() + "]  " + logRecord.getMessage() + "\r\n";
    } else if(logRecord.getLevel() == Level.WARNING) {
      return "[WARN  " + createDateTimeLog() + "]  " + logRecord.getMessage() + "\r\n";
    } else if(logRecord.getLevel() == Level.SEVERE) {
      return "[ERROR " + createDateTimeLog() + "]  " + logRecord.getMessage() + "\r\n";
    } else {
      return "[OTHER " …
Run Code Online (Sandbox Code Playgroud)

java logging java.util.logging

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

使用System.exit从Java Jar中获得Perl返回代码

所以我正在使用一个Perl脚本来调用命令,然后获取返回代码:

my $command = "java myjar.jar ARG1 ARG2 ARG3 2>&1";
my $result = open2( *Reader, *Writer, $command ) or die "Could not open 2-way pipe: $!\n";
my $result_return_code = $?;
Run Code Online (Sandbox Code Playgroud)

这似乎工作正常。但是,对于我的一项测试,它似乎没有用。我深入到Java代码,这就是打印出来的内容。

try {
 ...
}
catch (Exception e) {
  System.out.println("Failed");
  System.exit(99);
}
Run Code Online (Sandbox Code Playgroud)

我没有得到返回的错误代码99,而是得到的值为0。我现在尝试了dkatzel的编辑,并尝试将代码更改为以下内容:

my $command = "java myjar.jar ARG1 ARG2 ARG3 2>&1";
my $result = open2( *Reader, *Writer, $command ) or die "Could not open 2-way pipe: $!\n";
my $result_return_code = $? >> 8;
Run Code Online (Sandbox Code Playgroud)

但是,我仍然得到0的返回值。此更改还更改了我的其他测试用例之一,其中我得到的返回值为65280 ...,现在它返回为255。

好。现在,我尝试了Zaid的编辑,并且可以正常工作。这是我的代码如下所示(也显示了比以前更多的代码):

my $command = …
Run Code Online (Sandbox Code Playgroud)

java perl jar return-code

2
推荐指数
1
解决办法
1040
查看次数

具有多个模块的Maven项目结构

我对Maven项目结构有些新意.我正在创建一个项目,这将有两个罐子.这两个jar都不依赖于彼此,但是,它们将使用一些相同的库,并且我创建了两个辅助类(一个用于日志记录),这两个类将在两者中使用.

就项目结构而言,我正在遵循本指南:http: //maven.apache.org/guides/introduction/introduction-to-the-standard-directory-layout.html

我目前的项目只有一个模块.我正在使用IntelliJ IDE创建我的build.xml(使用ANT)来创建我的Jars.但是,IntelliJ build.xml不起作用,我不得不进行一些手动编辑,让它构建两个jar.我相信如果每个罐子都在它自己的模块中,这将得到解决.另外,根据以下内容,它们似乎应该是 http://www.jetbrains.com/idea/webhelp/module.html

这是我有点困惑的地方.如果我为第二个jar创建第二个模块,我该如何处理两个模块共享的类?每当我去创建一个新模块时,IntelliJ都会为新模块提供它自己的src/path.

正如我所说,我是Maven项目结构的新手.我也是ant的新手,并使用build.xml构建jar.如果我完全走错了路,请告诉我,以便我能尽早解决这个问题.

提前谢谢.

java project-structure maven

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

关闭进程并在perl脚本完成后继续运行

我正在使用perl脚本来启动需要保持运行的jar.但是,我希望我的perl进程结束.我认为这个线程可以解决我的问题: 如何在Perl中解雇并忘记进程?

但是,我尝试了分叉和使用系统(cmd&)技术,并且在我的perl脚本中都保持运行.

这是我的代码:

if (index($all_jars, 'myjar.jar') == -1) {
  unless(fork) {
  }
  else {
    exec("java -jar myjar.jar");
  }
}
Run Code Online (Sandbox Code Playgroud)

这里是我的系统(CMD&)代码:我不知道这是否意味着键入cmd和我的命令,或者只是我的指挥,但两个系统没有退出Perl脚本,直到之后的jar过程死亡.

system("cmd & java -jar myjar.jar");

OR

system("java -jar myjar.jar &");
Run Code Online (Sandbox Code Playgroud)

不确定我做错了什么...感谢您给我的任何帮助或想法.

perl process

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

Rails button_to与HTML按钮标记

我是Rails的新手,我正在尝试在页面上添加几个按钮.我看到你可以同时使用HTML标签或rails"button_to".但是,我无法找出每个方面的差异.

从我在SO中看到的,似乎button_to可以更容易地从控制器等调用函数.但是,HTML按钮似乎更容易自定义?这是真的?还有其他差异吗?

只是为了确保我在新项目中做正确的事情.提前致谢.

html ruby ruby-on-rails ruby-on-rails-4

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